1.2.3 字符的编码
字符包括西文字符(字母、数字、各种符号)和中文字符,即所有不可做算术运算的数据。计算机以二进制数的形式存储和处理数据,因此字符必须按特定的规则进行二进制编码才可进入计算机。而这些用于表示字符的二进制编码就是字符编码。
进行字符编码时,首先需要确定字符的数量,然后按顺序将每一个字符进行编号,编号值的大小无意义,仅作为识别与使用这些字符的依据。
1.西文字符的编码
用以表示字符的二进制编码称为字符编码。计算机中常用的字符(西文字符)编码有2种:EBCDIC码和ASCII码。
ASCII码是美国信息交换标准代码(American Standard Code for Information Interchange)的缩写,被国际标准化组织指定为国际标准,它有7位码和8位码两种版本。微型计算机采用的是ASCII码,而国际通用的则是7位ASCII码,即用7位二进制数来表示一个字符的编码,共有27=128个不同的编码值,所有大写字母的ASCII码都小于小写字母a的ASCII码,相应可以表示128个不同字符的编码,如表1-2所示。
表1-2中每个字符都对应一个数值,这个数值就是该字符的ASCII码值,其排列次序为b6b5b4b3b2b1b0,其中,b6为最高位,b0为最低位,如@编码是1000000,表示电子邮件符号。
ASCII码表中有34个非图形字符(控制字符),其余94个为可打印字符(图形字符)。计算机内部通常用一个字节(8个二进制位)存放一个7位ASCII码,最高位置为0。
表1-2 7位ASCII代码表
2.汉字的编码
根据表1-2的ASCII代码表可以看出,这只是针对英文使用环境的编码方式,而在我国使用计算机,同样需要针对汉字环境的编码。我国于1980年发布了国家汉字编码标准GB23121980,全称是《信息交换用汉字编码字符集·基本集》,简称GB码或国标码。
GB2312-1980标准包括了6 763个汉字,按其使用频度分为一级汉字3 755个和二级汉字3 008个。一级汉字按拼音排序,二级汉字按部首排序。此外,该标准还包括标点符号、数种西文字母、图形、数码等符号682个。
在进行编码时,将GB2312-1980标准中的6 763个汉字分为94行和94列的代码表,由区号(行号)和位号(列号)构成了区位码。区位码由4位的十进制数字组成,前两位为区号,后两位为位号,最多表示94×94=8 836个汉字。其编码规则为01~09区为特殊字符,10~55区为一级汉字,56~87区为二级汉字。
另外,世界上还有其他一些地区也是用汉字,这些汉字编码不同于我国使用的汉字字符集,这是另外一种汉字编码方案,地区标准号为CNS11643,这就是BIG5码。
3.汉字的处理过程
从汉字编码的角度看,计算机对汉字信息的处理过程实际上是各种汉字编码间的转换过程,这些编码主要包括:汉字输入码、汉字内码、汉字地址码、汉字字形码。
汉字输入码
汉字输入码是为使用户能够使用西文键盘输入汉字而编制的编码,也叫外码。汉字输入码有许多种不同的编码方案,大致分为音码、音形码、形码、数字码4种类型。
汉字内码
汉字内码是为在计算机内部对汉字进行处理、存储和传输而编制的汉字编码。在计算机内部为了能够区分是汉字还是ASCII码,将国标码每个字节的最高位由0变为1(即汉字内码的每个字节都大于128)。汉字的内码=汉字的国标码+ 8080H。
汉字字形码
汉字字形码是存放汉字字形信息的编码,它与汉字内码一一对应。每个汉字的字形码是预先存放在计算机内的,常称为汉字库。
汉字地址码
汉字地址码是指汉字库(这里主要指汉字字形的点阵式字模库)中存储汉字字形信息的逻辑地址码。
从汉字编码的过程可以看出,计算机处理汉字编码其实就是在各种汉字编码间进行转换,其流程如图1-2所示。
图1-2 汉字信息处理系统的模型