
1.3.6 字符的编码
字符数据又称非数值数据,用以表示一些符号、标记。汉字、图形和声音数据也属非数值数据。
1.美国信息交换标准代码(ASCII码)
ASCII码(American Standard Code for Information Interchange)是美国信息交换标准代码的简称,已被国际标准化组织(ISO)采纳,作为国际通用的信息交换标准代码。ASCII码是一种西文字符编码,有7位ASCII码和8位ASCII码两种,7位ASCII码称为标准ASCII码,8位ASCII码称为扩展ASCII码。7位ASCII码用一个字节(8位)表示一个字符,并规定最高位为0,实际只用到7位,可以表示128(27=128)种字符。ASCII码包括英文大小写字母、数字、专用字符、控制字符等;在ASCII码中,按其作用可分为:34个控制字符,第0~32号及127号,主要包括换行、回车等功能字符;10个阿拉伯数字,第48~57号;52个英文大小写字母,其中65~90号为26个英文大写字母,97~122号为26个小写字母;其余为一些标点符号、运算符号等32个专用符号,同一个字母的ASCII码值小写字母比大写字母大32。ASCII码的编码如表1-2所示。在计算机中,对非数值的文字和其他符号进行处理时,要对文字和符号进行数字化处理,即用二进制编码来表示文字和符号。字符编码(Character Code)是用二进制编码来表示字母、数字以及专门符号。
为了适应Internet的需要,进一步扩展计算机中各种语言文字的表达能力,国际标准化组织推出了兼容世界各国文字的Unicode编码方案。Unicode兼容ASCII码,采用16位编码。
表1-2 ASCII码的编码表

续表

2.汉字编码
(1)汉字编码字符集
我国已公布的汉字信息交换码标准以及与此有关的字符集标准有:GB 1988—1998《信息技术信息交换用七位编码字符集》、GB 2311—2000《信息技术字符代码结构与扩充技术》、GB 2312—1980《信息交换用汉字编码字符集基本集》。
我国于1981年颁布的《信息交换用汉字编码字符集基本集》GB 2312—1980(简称GB,国标码)。该字符集把高频字、常用字和次常用字归结为汉字基本集(共6763个),再按出现的频度分为一级汉字3755个(按拼音排序)和二级汉字3008个(按部首排序),字体均为简化字。这样,一、二级汉字约占累计使用频度的99.99%以上。基本集还包括西文字母、日文假名、俄文字母、数字以及一些特殊的图符记号,共7445个图形字符作了编码。
整个编码表分成94个区,每区94位。每个字符采用两个字节(高位为0)来表示,区编号为第一字节,位编号为第二字节。第一字节的21H开始为第1区,7EH结束为第94区;第二字节的21H开始为第1位,7EH结束为第94位。整个编码空间达8836个字符位置,汉字从第16区开始,一个字符的区码和位码表示该字符在编码空间中的位置,两者可组合成该字符的国标区位码(简称区位码)。每一字符与区位码对应的、两个字节均从21H开始的编码称为汉字信息交换码,简称国标码。例如,16区第1位所对应的汉字“啊”,其区位码为1001H,而其国标码为3021H。这样,区位码与国标码之间存在着简单的对应关系:
字符的国标码=字符的区位码+2020H
由此可知,国标码实际上是由两个字节的各7位二进制数来表示的,而西文字符是用一个字节来表示的。因此,为解决在计算机内部如何来表示汉字与西文的问题,引进了汉字内部码(或称汉字内码)。目前计算机采用的汉字内码绝大部分采用“高位为1的两字节码”,即把某汉字的国标码的第一、二字节的最高位均置1,就是该汉字的机内码(简称内码)。
汉字机内码=汉字国标码+8080H
【例1-13】汉字“啊”的国标码为3021H,求其机内码。
其机内码为:3021H+8080H=B0A1H。
由于汉字编码基本集为简体字,且字数不多,因此对于中医药管理、古籍管理和户籍管理等领域的计算机处理就显得不足。为此我国又先后推出了多个汉字编码辅助集,即第一辅助集GB 12345—1990(简称G1)、第三辅助集GB 7589—1987(简称G3)和第五辅助集GB 7590—1987(简称G5)。
(2)汉字编码的分类
汉字也是字符,但它比西文字符量多且复杂,给计算机处理带来了困难。汉字处理技术首先要解决的是汉字输入、输出及计算机内部的编码问题。根据汉字处理过程中的不同要求,有多种编码形式,主要可分为四类:汉字输入码、汉字交换码、汉字机内码和汉字字型码。
①汉字输入码
汉字输入码又称外码。目前,汉字输入法主要有键盘输入、文字识别和语音识别。键盘输入法是当前汉字输入的主要方法。汉字输入码的作用是让用户能直接使用西文键盘输入汉字。
汉字输入码必须具有易学、易记、易用的特点,且编码与汉字的对应性要好。因而,汉字输入码的产生往往都结合了汉字某一方面的特点,如读音、字型等。由于产生编码时兼顾的汉字特点可以不同,所以编码方案也有多种,通常将其分为四类:
流水码:根据汉字的排列顺序形成汉字编码,如区位码、国标码、电报码等,优点是重码律少,缺点是难于记忆。
音码:根据汉字的“音”形成汉字编码,如全拼码、双拼码、简拼码等,优点是容易掌握,缺点是重码律高。
形码:根据汉字的“形”形成汉字编码,如王码、郑码、大众码等,优点是重码少,缺点是不容易掌握。
音形码:根据汉字的“音”和“形”形成汉字编码,如智能ABC等,将音码和形码结合起来,能减少重码律同时提高汉字输入速度。
目前我国推出的汉字输入码编码方案已有数百种,受到用户欢迎的也有数十种,用户可以根据自己的喜好选择使用某一种汉字输入码。
②汉字交换码
汉字交换码(即国标码)是指在汉字信息处理系统之间或者信息处理系统与通信系统之间进行汉字信息交换时所使用的编码。设计汉字交换码编码体系应该考虑如下几点:被编码的字符个数尽量多,编码的长度尽可能短,编码具有唯一性,码制的转换尽可能方便。
③汉字机内码
汉字机内码又称汉字内码,它是计算机内部存储、传送或运算时使用的代码,是汉字系统设计的基础。在计算机系统中,西文字符也有机内码,一般采用一个字节的ASCII码表示。每个ASCII码由7位二进制数表示,在一个字节中最高位为0。而汉字国标码由两个字节的ASCII码组成,每个字节的最高位也是0。这样,在计算机系统中存储、传送或运算时,难以与西文ASCII码区分。故此,将国标码中每个字节的最高位置“1”,构成变形“国标码”,称为汉字机内码。例如“欢迎”二字的国标码为“3B36H-532DH”,而其机内码为“BBB6H-D3ADH”。
目前,我国使用的汉字机内码是采用双字节的变形国标码。要想实现中西文信息处理彻底兼容问题,理想办法是尽快贯彻ISO 10646标准。
④汉字字型码
汉字字型码用在显示或打印输出汉字时产生的字型,该种编码是通过点阵形式产生的。不论汉字的笔画多少,都可以在同样大小的方块中书写,从而把方块分割为许多小方块,组成一个点阵,每个小方块就是点阵中的一个点,即二进制的一个位。每个点由“0”和“1”表示“白”和“黑”两种颜色。这样就得到了字模点阵的汉字字型码,如图1-5所示。
根据对输出汉字精美程度的要求不同,汉字点阵的多少也不同,点阵的密度越大,汉字输出的质量也就越好。目前计算机上显示使用的汉字字型大多采用简易型汉字,即16×16点阵,这样每个汉字的汉字字型码就要占32个字节(16×16÷8=32),书写时常用十六进制数来表示。打印输出时使用的汉字字型大多为提高型,如24×24点阵、32×32点阵、48×48点阵、64×64点阵等。
有了汉字字型码,计算机就能够将输入的汉字编码在统一成汉字内码存储后,在输出时将它还原成汉字。一个汉字信息系统具有的所有汉字字型码的集合构成了该系统的汉字库。
(3)各种汉字编码的关系
从汉字编码转换的角度,图1-6所示显示了4种编码之间的关系,其间都需要各自的转换程序来实现。

图1-5 24×24点阵

图1-6 汉字编码之间的关系