码迷,mamicode.com
首页 > 其他好文 > 详细

Unicode

时间:2016-07-24 19:16:05      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

介绍

历史上有两个独立创立单一字符集的尝试,分别为国际标准化组织(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组合形式表示,如:\uDBFF\uDFFF 表示 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组合表示,如:\uDBFF\uDFFF表示U+10FFFF

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

 

Unicode 正则表达式标准手册

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

Unicode

标签:

原文地址:http://www.cnblogs.com/wavky/p/Unicode.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!