字符编码知识:UTF16

UTF16在最初时的设计想法是定长(2Byte)字符编码。在Unicode编码为U+0000到U+FFFF之前,它和Unicode编码是一样的,也就是说那个时候UTF16和Unicode是完全一样的。

但2002年之后,Unicode编码扩展到了U+10FFFF,UTF16对于超过U+FFFF的部分就无法用2Byte来表示U+10000到U+10FFFF的字符了,幸好Unicode编码没有定义从U+D800到U+DFFF的码位,于是UTF16就用4Byte来表示U+10000到U+10FFFF的字符。并用D8到DF来表示这是4Byte字符。具体方法如下:

UTF-16解码
lead  trail

DC00

DC01

   …   

DFFF

D800

10000 10001 103FF

D801

10400 10401 107FF

  

DBFF

10FC00 10FC01 10FFFF

发表评论

电子邮件地址不会被公开。 必填项已用*标注