



ASCII码只是对英文字母、数字和符号的编码,没有实现对汉字的编码。20 世纪 80 年代初,人们开始了利用计算机对汉字信息进行存储、传输、加工等的研究,逐渐形成了汉字信息处理系统。
计算机中汉字的表示也是采用二进制编码。根据应用目的的不同,汉字编码分为外码、交换码、机内码和字形码等。汉字编码在计算机中的实现过程如图 2-3 所示。
图 2-3 汉字编码
汉字交换码是指不同的具有汉字处理功能的计算机系统之间在交换汉字信息时所使用的代码标准,简称交换码,也被称为国标码。
1981 年,中国标准总局制定了中华人民共和国国家标准GB/T 2312—1980《信息交换用汉字编码字符集 基本集》,即国标码。我国一直沿用该标准所规定的国标码作为统一的汉字信息交换码。
国标码一共规定了汉字信息处理时所用到的 7 445 个字符编码,其中包括:6 763 个汉字代码和 682 个非汉字图形行号(如序号数字、罗马数字、英文字母、日文假名、俄文字母、汉语注音等)。汉字代码中又包括一级常用字 3 755 个,二级次常用字3 008 个。一级常用汉字按汉语拼音字母顺序排列,二级次常用字按偏旁部首排列,部首依笔画多少排序。
由于一个字节只可以表示 2 8 (256)种编码,显然一个字节不足以表示所有的汉字,所以必须用两个字节16 位二进制来表示一个国标码,每个字节只使用低 7 位,高位为 0。
与ASCII码表类似,国标码也有一张编码表。国标码GB/T 2312—1980 中的汉字、图形符号被放在一个94×94 的方阵中。方阵的每一行称为一个“区”,编号为 01 到 94;每一列称为一个“位”,编号为 01 到 94。方阵中每一个汉字或符号所在的区号和位号组合在一起形成的编码就是该汉字的“区位码”。区位码是一种用两位十进制数字表示汉字的编码方式。国标码是一种将区位码转化为二进制编码的方式。先将区位码中的区码和位码分别转换为十六进制数,然后加上 2020H,即可得到国标码。
例如:汉字“中”的区位码是 5448,即在方阵的 54 区 48 位,转换成十六进制为 3630H,然后加上 2020H,国标码即为 5650H。
汉字输入码也称汉字外码,是为将汉字输入到计算机设计的代码。输入汉字一般有两种途径:一种是计算机通过手写笔、语音识别、扫描识别等方式自动识别汉字;另一种是使用键盘手动输入汉字。常用的汉字输入码可以分为音码、形码、音形码三类。输入码在计算机中必须转换成机内码,才能进行存储和处理。
不同的输入方法,形成了不同的汉字外码。常见的输入法有以下几类:
①按汉字的读音形成的编码(音码):如全拼输入法、双拼输入法、智能ABC等。
②按汉字的字形形成的编码(形码):如五笔输入法等。
③按汉字的音、形结合形成的编码(音形码):如自然码等。
例如:汉字“中”的拼音输入码为zhong,双拼输入码为vs,五笔输入码为kh。
根据国标码的规定,每一个汉字都有了确定的二进制代码,在计算机内部汉字代码都用机内码,在磁盘上记录汉字代码也使用机内码。
输入码被接收以后,就由汉字操作系统的“输入码转换模块”转换为机内码,每个汉字的机内码用 2 个字节的二进制表示,在计算机内汉字字符必须与英文字符区别开,以免造成混乱。英文的机内码是用一个字节来存放ASCII码,一个ASCII码占一个字节的低 7 位,最高位是“0”,为了区别,汉字机内码中两个字节的最高位均为“1”,即国标码加上 8080H,便可得到机内码。
例如,汉字“中”的国标码为 5650H(0101011001010000B),机内码为D6D0H(1101011011010000B)。
字形码是汉字的输出码,输出汉字时都采用图形方式,无论汉字的笔画多少,每个汉字都可以写在同样大小的方块中。点阵码是一种用点阵表示汉字字形的编码,它把汉字按字形排列成点阵,常用的点阵有 16×16、24×24、32×32 或更高。
点阵码汉字字形通常分为通用型和精密型两类。通用型汉字字形点阵分为三种:
①简易型:16×16 点阵。
②普通型:24×24 点阵。
③提高型:32×32 点阵。
精密型汉字字形用于常规的印刷排版,由于信息量较大(字形点阵一般在 96×96 点阵以上),通常都采用信息压缩存储技术。
比如,16×16 点阵就是将每个汉字用 16 行,每行 16 个点表示,一个点需要 1 位二进制代码,16 个点需用16 位二进制代码,共 16 行,1 个字节为 8 位,所以需要 16×16/8=32 字节,即 16×16 点阵表示一个汉字,字形码需用 32 字节。而 24×24 点阵的汉字要占用 24×24/8=72 个字节;32×32 点阵的字形码需要 32×32/8=128个字节。即:字节数=点阵行数×点阵列数/8。显然,点阵中行、列数划分越多,字形的质量越好,锯齿现象也就越轻微,但存储汉字字形码所占用的存储空间也就越大。
通常是用 16×16 点阵来显示汉字,如图 2-4 所示,是“中”字的 16×16 点阵字模,其对应的位代码如图 2-5所示。点阵规模越大,每个汉字存储的字节数就越多,字库也就越庞大,字形分辨率越好,字形也越美观。
图 2-4 “中”字的 16×16 点阵字形示意图
图 2-5 “中”字的位代码
对每一个汉字,都要有对应的字的模型,简称字模,存储在计算机内,字模的集合就构成了字模库,简称字库。比如宋体字库、仿宋体字库、黑体字库、楷体字库和繁体字库等。汉字输出时,需要先根据内码找到字库中对应的字模,再根据字模输出汉字。
汉字的点阵字形的缺点是放大后会出现锯齿现象,很不美观。中文Windows中广泛采用了TrueType类型的字形码,它采用了一种电脑轮廓字体(曲线描边字)类型标准的字形码,可以实现无限放大而不产生锯齿现象,这种类型字体文件的扩展名是.ttf,类型代码是tfil。
汉字地址码是指汉字库(这里主要指字形的点阵式字模库)中存储汉字字形信息的逻辑地址码。汉字库中,字形信息都是按一定顺序(大多数按国标码中汉字的排列顺序)连续存放在存储介质中,所以汉字地址码也大多是连续有序的,而且与汉字内码间有着简单的对应关系,以简化汉字内码到汉字地址码的转换。