unicode编码简介:
最近做一个字符级别去噪的程序,接触了Unicode编码,顺便对对他做了简单的总结。
Unicode字符集可以简写为UCS(Unicode Character Set),目前已到版本6.0.0,具体见参考链接。
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。
Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。
码位就是可以分配给字符的数字。
Unicode标准有UCS-2、UCS-4的说法。UCS-2用两个字节编码,UCS-4用4个字节编码。 UCS-4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个平面(plane)。 每个平面根据第3个字节分为256行 (row),每行有256个码位(cell)。group 0的平面0被称作BMP(Basic Multilingual Plane)。 将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。 每个平面有2^16=65536个码位。Unicode计划使用了17个平面,一共有17*65536=1114112个码位。
在Unicode 5.0.0版本中,已定义的码位只有238605个,分布在平面0、平面1、平面2、平面14、平面15、平面16。 PUB,就是保留给大家放自定义字符的区域 Unicode 5.0.0版本中,使用了238605-65534*2-6400-2408(pub)=99089个码位 ,每段码位区域对应的的字符参见参考链接
99089个已定义码位分布在平面0、平面1、平面2和平面14上,它们对应着Unicode目前定义的99089个字符, 其中包括71226个汉字。平面0、平面1、平面2和平面14上分别定义了52080、3419、43253和337个字符。 平面2的43253个字符都是汉字。平面0上定义了27973个汉字,汉字的分布:
Block名称 | 开始码位 | 结束码位 | 字符数 | |
CJK统一汉字 | 4E00 | 9FBB | 20924 | |
CJK统一汉字扩充A | 3400 | 4DB5 | 6582 | |
CJK统一汉字扩充B | 20000 | 2A6D6 | 42711 | |
CJK兼容汉字 | F900 | FA2D | 302 | |
CJK兼容汉字 | FA30 | FA6A | 59 | |
CJK兼容汉字 | FA70 | FAD9 | 106 | |
CJK兼容汉字补充 | 2F800 | 2FA1D | 542 |
在早期的Unicode版本中,CJK统一汉字区的范围是0x4E00-0x9FA5,也就是我们经常提到的20902个汉字。
当前版本的Unicode增加了22个字符,码位是0x9FA6-0x9FBB。
与去噪相关的几段区位码,其对应的可视化的字符见参考链接:
0000-007F:C0控制符及基本拉丁文 (C0 Control and Basic Latin)
2000-206F:常用标点 (General Punctuation)
2150-218F:数字形式 (Number Form)
2460-24FF:封闭式字母数字 (Enclosed Alphanumerics)
3000-303F:CJK 符号和标点 (CJK Symbols and Punctuation)
31C0-31EF:CJK 笔画 (CJK Strokes)
31F0-31FF:日文片假名语音扩展 (Katakana Phonetic Extensions)
3200-32FF:封闭式 CJK 文字和月份 (Enclosed CJK Letters and Months)
3300-33FF:CJK 兼容 (CJK Compatibility)
3400-4DBF:CJK 统一表意符号扩展 A (CJK Unified Ideographs Extension A)
4E00-9FBF:CJK 统一表意符号 (CJK Unified Ideographs)
FE30-FE4F:CJK 兼容形式 (CJK Compatibility Forms)
FF00-FFEF:半型及全型形式 (Halfwidth and Fullwidth Form)
参考 http://www.unicode.org
http://hi.baidu.com/kalcaddle/blog/item/e3b634027c3c3f7d3912bb80.html
http://www.fmddlmyy.cn/text24.html
http://baike.baidu.com/view/40801.htm