zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    敏捷开发-各个原则的理解
    DWH中增量数据的抽取
    SSIS的部署和配置
    Checkpoint 和Breakpoint
    两种动态SQL
    SQLServer查询计划
    程序员接项目的经验1
    Date.prototype.format
    前端颜色选择器
    Idea快捷键和使用技巧【未完】
  • 原文地址:https://www.cnblogs.com/wavky/p/Unicode.html
Copyright © 2011-2022 走看看