utf-16

作者: 小小青蛙不怕风吹雨打 | 来源:发表于2017-02-07 15:54 被阅读0次

wiki UTF-16

编程语言的使用

utf-16可以算是2字节定长编码。
字符处理方便且速度快,算长度啊,定位字符啊,正则匹配等。
所以许多编程语言的内部编码都是utf-16。
java、js、c#、python默认的字符串内部编码都是utf-16。

然而那些unicode超出U+FFFF的字符需要4个字节表示。
就出坑了,如js代码

a = "我是𪚥" // a.length == 4
b = a[2] // b是个乱码,而不是'𪚥'

优点

  • 2字节定长编码,处理速度快。【有些字符要4个字节,如"𪚥"】
  • 节省空间。非ascii字符多数可用2字节表示,utf-8下很多汉字要3个字节。

缺点

  • 不兼容ascii。
  • 一些字符是4个字节,会出bug,如"𪚥"。
  • 需要区分字节序。文件保存一般有个bom头:BE-'FEFF'、LE-'FFFE'。

特殊的编码

U+D800到U+DFFF是没有定义unicode的,utf-16用这段来标识4字节字符。分高低位,共20个有效bit位。
如果不支持非UCS-2的unicode,可以直接不认这个范围里的字符。

相关文章

网友评论

      本文标题:utf-16

      本文链接:https://www.haomeiwen.com/subject/gpcmittx.html