当前位置: 代码迷 >> Web前端 >> Unicode跟UTF系列(2)
  详细解决方案

Unicode跟UTF系列(2)

热度:135   发布时间:2012-09-05 15:19:35.0
Unicode和UTF系列(2)
UFT-8
        UTF-8采用的是变长码的方式,其编码规则如下:
代码点值的范围(16进制)        第1字节         第2字节         第3字节
0000 0000-0000 007F         0xxxxxxx0-127)                        
0000 0080-0000 07FF         110xxxxx (192-223)        10xxxxxx (128-191)        
0000 0800-0000 FFFF         1110xxxx (224-239)        10xxxxxx (128-191)        10xxxxxx (128-191)       


        注:x的内容是将左边代码点的二进制值依次注入。
        理论上UTF-8可以达到6个字节编码(上表省略后3位字节以上的编码方式),但实际上,我们一般只采用0x0000 0000 到0x0000 0000FFFF的范围内的字符,也就说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的所有代码点。
  相关解决方案