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