Java 中的 Unicode 字符编码

Unicode

Unicode 源于一个很简单的想法:将全世界所有的字符包含在一个集合里,计算机只要支持这一个字符集,就能显示所有的字符,再也不会有乱码了。

它从 0 开始,为每个符号指定一个编号,这叫做 ”码点”(code point)。比如,码点 0 的符号就是 null(表示所有二进制位都是 0)。

U+0000 = null

上式中,U+ 表示紧跟在后面的十六进制数是 Unicode 的码点。

这么多符号,Unicode 不是一次性定义的,而是分区定义

每个区可以存放 65536 个(2^16)字符,称为一个平面(plane)。

目前,一共有 17 个平面,也就是说,整个 Unicode 字符集的大小现在是 2^21

最前面的 65536 个字符位,称为 基本平面缩写 BMP),它的码点范围是从 0 一直到 2^16-1,写成 16 进制就是从 U+0000U+FFFF

所有最常见的字符都放在这个平面,这是 Unicode 最先定义和公布的一个平面。

剩下的字符都放在辅助平面(缩写 SMP),码点范围从 U+010000 一直到 U+10FFFF

Unicode 只规定了每个字符的码点,到底用什么样的字节序表示这个码点,就涉及到编码方法。

参考

  • 字符编码笔记:ASCII,Unicode 和 UTF-8
  • 彻底弄懂 Unicode 编码
  • 细说字符编码ASCII、Unicode、UTF-8和Java中的字符char

你可能感兴趣的:(Java 中的 Unicode 字符编码)