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

图说我对Unicode的一点理解

时间:2014-08-25 17:02:24      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:unicode

代码点

Unicode标准的本意很简单:希望给世界上每一种文字系统的每一个字符,都分配一个唯一的整数,这些整数叫做代码点Code Points)。

代码空间

所有的代码点构成一个代码空间Code Space),根据Unicode定义,总共有1,114,112个代码点,编号从0x00x10FFFF。换句话说,如果每个代码点都能够代表一个有效字符的话,Unicode标准最多能够编码1,114,112,也就是大概110多万个字符。最新的Unicode标准(7.0)已经给超过11万个字符分配了代码点。

代码平面

Unicode标准把代码点分成了17代码平面Code Plane),编号为#0#16。每个代码平面包含65,536(2^16)个代码点(17*65,536=1,114,112)。其中,Plane#0叫做基本多语言平面(Basic Multilingual Plane,BMP),其余平面叫做补充平面(Supplementary Planes)。Unicode7.0只使用了17个平面中的6个,并且给这6个平面起了名字,如下图所示:

bubuko.com,布布扣

下面是这些平面的名字和用途:

  • Plane#0 BMP(Basic Multilingual Plane)大部分常用的字符都坐落在这个平面内,比如ASCII字符,汉字等。
  • Plane#1 SMP(Supplementary Multilingual Plane)这个平面定义了一些古老的文字,不常用。
  • Plane#2 SIP(Supplementary Ideographic Plane)这个平面主要是一些BMP中没有包含汉字。
  • Plane#14 SSP(Supplementary Special-purpose Plane)这个平面定义了一些非图形字符。
  • Plane#15 SPUA-A(Supplementary Private Use Area A)
  • Plane#16 SPUA-B(Supplementary Private Use Area B)

BMP

BMP是最重要的一个代码平面,大部分常用的字符都定义在这个平面内,如下图所示:

bubuko.com,布布扣

在BMP中定义的代码点包括:

  • ASCII ASCII总共有128个字符,占据了BMP的前128个代码点(上图绿线)
  • ISO-8859-1 共256个字符,占据了BMP的前256个代码点(上图绿线+蓝线)
  • CJK Unified Ideographs 上图的红色区域(占据BMP大约1/3)定义了两万多个汉字,其中前20,902个汉字是按照《康熙字典》里笔画顺序排列的
  • Surrogate Code Points 从0xD800到0xDBFF的1024个代码点是High-surrogate代码点,从0xDC00到0xDFFF的1024个代码点是Low-surrogate代码点。这2048个代码点并不是有效的字符代码点,它们是为UTF编码保留的。一个High-surrogate代码点和一个Low-surrogate代码点组成一个代理对(Surrogate Pair),可以在UTF-16里编码BMP之外的某个代码点(1024^2+65,536=1,114,112)。

参考资料

本文主要参考资料:

图说我对Unicode的一点理解

标签:unicode

原文地址:http://blog.csdn.net/zxhoo/article/details/38819517

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