Unicode字符集(Unicode字符编码)代码点
代码空间
代码平面
ASCII总共有128个字符,占据了BMP的前128个代码点。 代码组
第一个字节后七位用来分组,共128组,第二个字节用来分平面,共256平面,每个平面有256行,每行有256码位,也就是每个平面有65536(2的16次方)个码位,码位中字符的编码并不是顺序编码,中间有空码位。这种分组分面的做法原本是UCS的做法,但后来统一后,Unicode也采用了这种方式。 Unicode只使用第0组(group)的第0-16平面(第0组的第0平面叫做基本平面,其他平面叫做辅助平面),其他平面不使用,那UCS也保证不给其他平面中的码位赋值,中文常见字符主要位于第二平面而且第二平面上貌似也只有中文,不常见字符在后面其他平面也有分布,所以,使用UTF-8编码的话,中文可能使用3-4个字节编码,使用UTF-16编码,中文使用4个字节编码,使用UTF-32编码,中文使用4字节编码。 在Unicode码表中,使用了UCS的第0组前17个面,而主要字符又集中在第0组的第0面(基本平面),也就是说最常用的字符1-3个字节就能够表示,对于一些特定语言的字符则使用的更少,如英语使用1个字节表示,中文大部分位于第二平面。 Unicode没有规定字符对应的二进制码如何存储。比如一个字符它的 Unicode 码点是 0x6c49,对应的二进制数是 110110001001001,二进制数有 15 位,这也就说明了它至少需要 2 个字节来表示。可以想象,在 Unicode 字典中往后的字符可能就需要 3 个字节或者 4 个字节,甚至更多字节来表示了。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。 UTF的英文全称叫做Unicode Transformation Format,中文直译为Unicode转换格式。 |
|