Unicode和UTF系列(2)
UFT-8
UTF-8采用的是变长码的方式,其编码规则如下:
代码点值的范围(16进制)第1字节第2字节第3字节
00000000-0000007F0xxxxxxx0-127)
00000080-000007FF110xxxxx(192-223)10xxxxxx(128-191)
00000800-0000FFFF1110xxxx(224-239)10xxxxxx(128-191)10xxxxxx(128-191)
注:x的内容是将左边代码点的二进制值依次注入。
理论上UTF-8可以达到6个字节编码(上表省略后3位字节以上的编码方式),但实际上,我们一般只采用0x00000000到0x00000000FFFF的范围内的字符,也就说UTF-8实际上只采用了3个字节编码。
UTF-8除了省空间和兼容ASCII的优点后,其编码方式(类似于哈夫曼编码,很容易判断出1个字节及其后面的字节数)决定了它以下两个优点:
1、与字节顺序无关,可以在不同平台之间交流。
2、容错能力高,任何一个字节损坏后,最多只会导致一个编码码位损失,不会链锁错误(如GB码错一个字节就会整行乱码)
UTF-16和UTF-32
UTF-16是变长码,大致上相当于UCS-2码的直接实现,但是也有一部分UCS-4的字符。所以可以猜到,它大部分是采用2个字节编码,而有部分特殊符号采用3字节编码,所以大致相当于20位编码,值在0到0x10FFFF之间。
UTF-32用四个字节表示代码点,这样就可以完全表示UCS-4的所有代码点。
相关推荐
86530296 2020-11-10
周游列国之仕子 2020-09-21
88540591 2020-06-16
89411051 2020-06-14
mjshldcsd 2020-06-14
88384957 2020-06-12
84590091 2020-06-08
88540591 2020-06-04
88540591 2020-06-01
81214051 2020-06-01
84590091 2020-05-03
81214051 2020-04-25
honghao0 2020-04-24
84590091 2020-04-22
85271041 2020-04-10
88384957 2020-03-27
85271041 2020-03-08