计算机的3种字符集

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/88757126

一 点睛

计算机字符集可归类3种:单字节字符集(SBCS)、多字节字符集(BMCS)和宽字符集(Unicode字符集)。

二 单字节字符集

它的所有字符都只有一个字节的长度,SBSC是一个理论规范。具体实现时有两种字符集:ASCII字符集和扩展ASCII字符集。

ASCII字符主要用于美国,全称是美国国家标准信息交换码,使用7位来表述一个字符,总共可以表示128个字符。

在计算机刚刚在美国兴起的时候,ASCII字符集中的128个字符就够用了,但是计算机发展到了欧洲,欧洲各个国家的字符就多了,128个不够用,于是人们对ASCII码进行了扩展,因此就扩展ASCII为256个字符,前0到127个和原来的ASCII字符集相同,后面多出来的128个字符用来表示欧洲国家的一些字符,如拉丁字母、希腊字母。有了扩展ASCII字符,计算机在欧洲也发展起来了。

三 多字节字符集

随着计算机普及到更多国家(比如东亚和中东)。由于这些国家的字符更多,8位就不够用了。因此为了能够表示其他国家的文字(比如中文),人们继续对ASCII进行扩展,即英文字母和欧洲字符为了和扩展ASCII兼容,依然用一个字节表示,而对于其他各国自己的字符(如中文字符)则用两个字节表示,这就是多字节字符集。

这也是一个理论规范,具体实现时,各个国家根据自己的语言字符分别实现不同的字符集,比如中国实现了GB-2312字符集(后来又扩展出GBK和GB18030),日本实现了JIS字符集。

MBCS解决了欧美地区以外的字符表示,但缺点也很明显。MBCS保留原有或者ASCII码的同时,用两个字节来表示各国语言的语言字符,这就导致占用一个字节和两个字节混在一起,使用起来不方便。

四 Unicode编码

Unicode编码是纯理论的概念,和具体计算机没关系。为了把全世界所有的文字符号都统一进行编码,国际标准化组织提出了Unicode编码,它可以容纳世界上所有文字和符号的字符编码方案,这个方案规定任何语言中的任一字符都只对应一个唯一的数字,这个数字被称为代码点,或称码点、码位,它用十六进制书写,并加上U+前缀,比如,“田”的代码点是U+7530,“A”的代码点是U+0041.代码点是一个理论的概念,和具体的计算机无关。

所有字符及其Unicode编码构成的集合就叫Unicode字符集(Unicode Character Set,UCS).早期版本有UCS-2,它用两个字节编码,最多表示65535个字符。但UCS-2后来不够用了,因此有了UCS-4这个版本,UCS-4用4个字节编码(实际上只用了31位,最高位必须为0),它根据最高字节分成2^7=128个组。每个组再根据次高字节分为256个平面。每个平面根据第3个字节分为256行,每行256个码位。组0的平面0被称为基本多语言平面(BMP),即范围在U+00000000到U+0000FFFF的码点,如果将UCS-4的BMP去掉前面的两个零字节,就得到了UCS-2(U+0000到U+FFFF)。每个平面有2^16=65536个码位。Unicode计划使用了17个平面,一共有17*65536=1114112个码位。在Unicode 5.0.0版本中,已定义的码位只有238605个,分布在平面0、1、2、14、15、16。

平面15和16上只是定义了两个各占65534个码位的专用区。所谓专用区,就是保留为大家放自定义字符的区域,简称PUA。

平面0也有一个专用区,有6400个码位。

平面0还有一个被称为代理区的特殊区域,有2048个码位。代理区的目的是用两个UTF-16字符表示BMP以外的字符。

在Unicode 5.0.0版本 238605-2*65534-6400-2048=99089,它们对应着Unicode目前定义的99089个字符,其中包括71226个汉字。

平面0、平面1、平面2和平面14上分别定义了52080、3419、43253和337个字符。平面2的43253个字符都是汉字。平面0上定义了27973个汉字。

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/88757126