【面向面试学习】Java的Char只占两个字节,采用utf-8编码时,为什么可以存储汉字(3字节)?

498 阅读1分钟
  1. Unicode简单来说就是一种世界标准,这个标准是要用统一全世界字符在计算机上的表示方法,比如:英语字母、阿拉伯数字、汉字、日文、韩语等,类似的还有ASCII码, 重点Unicode是字符集

  2. UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的一种可变长度字符编码。重点UTF-8是编码方式

  3. UTF-16是Unicode字符编码的抽象码位映射为16位长的整数(即码元)序列的编码方式,从而实现数据存储或传递。Unicode字符的码位,需要1个或者2个16位长的码元来表示,因此这是一个变长表示。重点Unicode字符集通过UTF-16编码实现存储

  4. Unicode一个是字符集,UTF-16UTF-8是编码方式。

  5. Java中Char采用Unicode字符集在内存中表示每个字符,实际存入磁盘时,Char采用Utf-16编码方式,将字符集转为对应的二进制存储。

  6. UTF-8虽然赫赫有名,但是Char跟UTF-8关系不太大。