Unicode是一种编码格式,它出现的主要原因是为了统一全球的符号编码,因为在Unicode之前,对于一些基本字符通常采用ASCII码的方式表示,但ASCII码是由一个字节组成的,最多只可以表示256个字符。

那么ASCII码能表示的字符是相当的有限了,且和其他的编码方式不能共同使用。因为对于同一个字符,别的编码方式可能对应的数字和ASCII中的不一致,这就导致了不通用的问题,这也是Unicode致力于解决的问题,它希望给世界上每一种文字系统的每一个字符,都分配一个唯一的整数,这些整数叫做代码点(Code Points)。

Unicode的数量理论上是无限的,但从中分出了 UTF-8, UTF-16, UTF-32等,其中的数字代表他可以表示的字符最少占用的bit数量。也就是 UTF-8 最少可以用一个字节表示一个字符,UTF-16 最少要用两个字节表示一个字符,UTF-32 最少要用 4 个字节来表示一个字符。

其中 UTF-8 是最灵活的,可以使用 1 - 8 个字节来表示字符, UTF-16 可以用两个字节或四个字节来表示一个字符,UTF-32 只能用四个字节来表达一个字符。

Unicode编码使用16进制,表示方法为 U+xxxx,U+0000 ~ U+FFFF 为基本多文种平面 (Base Multilingual Plane)。Unicode规范上规定了17个代码平面,分为 #0 ~ #16,其中 #0 就是 BMP,这17个平面理论上可以编码110多万个字符。

根据情况合理利用 UTF-8,UTF-16 等可以节省空间 (UTF-8需要占用空间来表示这个字符需要几个字节)

参考