• Unicode


    介绍

    历史上有两个独立创立单一字符集的尝试,分别为国际标准化组织(ISO) 的 ISO 10646 项目和Unicode项目,后来两个项目进行了合并、协同工作,但仍保持独立公布各自字符集标准。

    国际标准 ISO 10646定义的通用字符集,称为UCS,包括UCS-2UCS-4两种格式,对应2字节和4字节,UCS-4只是简单追加高位部分而已。

    UCS-2格式用于记录基本多语言平面(BMP)的字符编码(Code Point),长度固定为16位,范围为U+0000U+FFFF,对应于* UTF-16

    UCS-4UCS-2基础上,追加记录不常用的Supplementary Characters(增补字符),如象形文字等,用于历史科研等领域,长度为32位,当前有效范围为U+000000U+10FFFF,对应于UTF-32编码。

    目前Unicode保持与 ISO 10646 标准的同步兼容,编码空间为U+000000U+10FFFF(与 ISO 10646 协议后的结果)。

    UTF-16是变长表示,使用1-216位长码元进行表示,因此可通过组合表示完整的Unicode编码空间,但不兼容ASCII编码(单字节)。

    UTF-16使用一个16位码元表示U+0000U+FFFF区间时,称为基本多语言平面BMP,与UCS-2编码一致,大部分常用字符都在此区间内。

    UTF-16使用两个16位码元表示U+10000U+10FFFF区间时,称为辅助平面,用于记录增补字符。

    因此UTF-16实际为UCS-2的超集,但不等同于UCS-4

    Java使用UTF-16表示char字符,使用Unicode形式表示增补字符时,需使用UTF-16组合形式表示,如:uDBFFuDFFF 表示 U+10FFFF

    也可使用面向Code PointAPI构造,如:

    new StringBuilder().appendCodePoint(0x10FFFF).toString();

    正则表达式Unicode支持

    Swift

    使用NSRegularExpression类,uxxxx 用于2字节的BMP表示, Uxxxxoooo用于4字节的全域表示,上限为U0010FFFF

    参考:http://userguide.icu-project.org/strings/regexp

    Android

    使用Pattern类,uxxxx 用于2字节的BMP表示,增补字符部分使用UTF-16组合表示,如:uDBFFuDFFF表示U+10FFFF

    参考:http://www.oracle.com/us/technologies/java/supplementary-142654.html

    Unicode 正则表达式标准手册

    http://www.unicode.org/reports/tr18/

  • 相关阅读:
    不做男女朋友,做蓝颜吧
    前端 让我尴尬~
    让IE6,IE7,IE8,IE9支持CSS3
    解决chrome不能显示12PX以下字号的字体问题!
    jQuery阻止冒泡和HTML默认操作
    Lazy Load, 延迟加载图片
    解秘微软雅黑
    FLV流媒体应用大攻略
    提升你设计水平的CSS3新技术
    分享下自写的HTML CSS规范
  • 原文地址:https://www.cnblogs.com/wavky/p/Unicode.html
Copyright © 2020-2023  润新知