计算机系统平台
上QQ阅读APP看书,第一时间看更新

3.2.2 汉字字符集及其编码

计算机发明之后的很长一段时间,只能应用于美国及西方一些发达国家,ASCII编码也能够很好地满足用户的需求。但是当我国也有了计算机之后,为了显示中文,必须设计一套编码规则能将汉字转换为二进制数。

我国计算机科学家把ASCII中的127之后的符号(即EASCII)取消掉,规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(高字节)从0xA1(16110)到0xF7(24710),后面一个字节(低字节)从0xA1到0xFE(25410),这样就有7000多种二进制编码,就可以表示出7000多个简体汉字。在这些编码里,还把数学符号、罗马字母、希腊字母以及日文的假名都编进去了,在ASCII编码里本来就有的数字、标点、字母都重新编了两个字节长的编码,这就是常说的全角字符,而原来在127之前的就叫半角字符了。

上述编码规则就是GB 2312。GB 2312或GB 2312—1980是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集—基本集》,由中国国家标准总局发布,1981年5月1日实施。GB 2312基本满足了汉字的计算机处理需要,但对于人名、古汉语等方面的罕用字,GB 2312不能处理,这导致了后来GBK(全称《汉字内码扩展规范》)及GB 18030汉字字符集的出现。图3-2所示为GB 2312编码表的开始部分(由于其非常庞大,只列举开始部分,具体可查看GB 2312简体中文编码表)。

图3-2 GB 2312编码表的开始部分

由于GB 2312—1980只收录了6763个汉字,有不少汉字并未收录在内,如部分在GB2312—1980推出以后才简化的汉字(如“啰”),部分人名用字(如我国前总理朱镕基的“镕”字),我国台湾省及香港特别行政区使用的繁体字,日语及朝鲜语汉字等。于是微软公司利用GB 2312—1980未使用的编码空间,收录GB 13000.1—1993(目的是对世界上的所有文字统一编码,以实现世界上所有文字在计算机上的统一处理)全部字符并制定了GBK编码,最早实现于Windows95简体中文版。虽然GBK收录GB 13000.1—1993的全部字符,但为了能与GB 2312—1980兼容,所以采用了与GB 13000.1—1993不同的编码方式。GBK编码并非国家标准,而是曾由国家技术监督局标准化司、电子工业部科技与质量监督司公布为“技术规范指导性文件”。

1995年之后的实践表明,GBK作为行业规范,缺乏足够的强制力,不利于其本身的推广,而我们寄予厚望的GB 13000的实现又脚步缓慢,现有汉字编码字符集标准已经不能满足我国信息化建设的需要。为此,原国家质量技术监督局和信息产业部组织专家制定发布了新的编码字符集标准,GB 18030—2000《信息技术信息交换用汉字编码字符集基本集的扩充》。2005年发布的GB 18030—2005在GB 18030—2000的基础上增加了42711个汉字(共收录汉字70244个)和多种我国少数民族文字的编码。