4.
其中第0个平面BMP(Basic Multilingual Plane基本多语言平面、基本多文种平面、基本平面、平面0),基本涵盖了当今世界上正在使用中的常用字符。我们平常用到的Unicode字符,一般都是位于BMP平面上的。
BMP平面以外其他的增补平面(也称为辅助平面)要么用来表示一些非常特殊的字符(比如不常用的象形文字、远古时期的文字等),且多半只有专家在历史和科学领域里才会用到它们;要么被留作扩展之用。目前Unicode字符集中尚有大量编号空间未被使用。
另外,BMP平面有一个专用区(Private Use Zone):0xE000~0xF8FF(十进制57344~63743),共6400个码点,被保留为专用(私用),因而永远不会被分配给任何字符;还有一个被称为代理区(Surrogate Zone)的特殊区域:0xD800-0xDFFF(十进制55296~57343),共2048个码点,目的是用基本平面BMP中的两个码点“代理”表示BMP以外的其他增补平面的字符(解释详见后文)。
Unicode字符集中的平面与字符映射范围5.
Unicode字符集的字符编码方式一开始规定用两个字节(即16位)来统一表示所有的字符(即UTF-16编码方式,UTF-16编码方式要早于UTF-8编码方式、UTF-32编码方式出现,详见后文)。
对于ASCII字符,与前面介绍的ANSI编码一样,Unicode也保持其原编码不变(准确地说,应该是保持其“编号不变”,因为在传统字符编码模型中,编号与编码不作区分,说“编码不变”也勉强可以),只是在UTF-16字符编码方式中将其长度由原来的8位扩展为16位(注意,这里的字符编码方式CEF还只是逻辑意义上的码元序列,不是字符编码模式CES——物理意义上的字节序列),而其他文化和语言的字符则全部重新统一编码。
由于ASCII字符只需要用到UTF-16的16位编码中的低8位,所以其高8位永远是0(实际上也只用到了低8位中的低7位,因此准确地说其高9位永远是0)。
6.
在Unicode标准最初推出的UTF-16字符编码方式中,无论是半角的英文字母,还是全角的汉字,它们都表示统一的“一个字符”,同时其编码也都是统一的“两个字节”(也因此UTF-16属于双字节码元编码方式,而Unicode标准在UTF-16字符编码方式之后所推出的UTF-8字符编码方式则属于单字节码元编码方式,两者之间的关系与区别详见后文)。
请注意这里的“字符”和“字节”两个术语意义上的不同:“字节”是一个与计算机相关的物理意义上的8位存贮单元,而“字符”则是一个与文化相关的逻辑意义上的文字符号。
7.
在Unicode标准推出之前,那些做多语言国际软件的公司遇上过很大麻烦。他们为了在不同的国家销售同一套软件,就不得不特别注意字符编码的问题。不仅要处处小心不要搞错,还要把软件中的文字在不同的字符编码中转换来转换去,而Unicode标准的出现,提供了一个很好的一揽子解决方案。
于是从Windows NT开始,微软趁机把操作系统改了一遍,把所有的核心代码都改成了采用Unicode标准的版本(实际使用的就是Unicode标准的UTF-16字符编码方式CEF所对应的UTF-16字符编码模式CES)。
从Windows NT开始,Windows系统终于无需要加装各种本土语言系统(比如“UCDOS希望汉字系统”之类的),就可以直接显示全世界上所有的字符了。当然,为了保持兼容性,对于之前的ANSI编码方案,Windows仍然是必须支持的。
来源: http://www.cnblogs.com/benbenalin/p/6915513.html