欢迎来到通信人在线![用户登录] [免费注册]

计算机中的汉字编码:内码与外码

浏览:13430  来源:通信人在线  日期:2023-02-04

我们知道,计算机是西方人首先发明和使用的,他们理所当然地解决了拼音文字在计算机上的处理问题。而汉字是世界上惟一正在使用的表意文字,数量众多,如何在计算机上处理好汉字是对这一古老文化的挑战。计算机汉字处理技术,对推广我国计算机应用及加强国际交流有着十分重要的现实意义。

在计算机上处理汉字要比处理西文字符复杂得多,处理汉字首先要确定汉字编码字符集的问题,并要解决汉字的输入、传输、存储、显示、输出等一系列问题。在处理过程中每一个环节需要各自不同的编码,因此产生了汉字编码系统和汉字处理技术,也即计算机中的汉字编码中称之为的内码和外码。

一、关于内码

内码是指存储在计算机内的相关汉字编码,以供外码所调用或提取。计算机中的汉字编码中的内码,通常涉及到的类型是区位码、交换码(也有称国标码)及机内码等。之所以涉及到这些编码,是因为早期对字符集编码时采用的编码方式不同,由早期的7位编码过渡到后期的8位编码,导致了7位编码与8位编码的共存,就涉及到它们间的兼容问题。另外,汉字字形码和汉字地址码也属于内码的类型。

1区位码

“区位码”的来历源自于我国发布的第一个汉字编码字符集GB/T 2312-1980《信息交换用汉字编码字符集 基本集》。汉字编码字符集是用于汉字信息处理、汉字通信等系统之间的信息交换。该字符集是对我国最常用的6763个汉字进行二进制编码,采用双字节编码表示。其中,前面的字节为第一字节,后面的为第二字节,它们构成一个94×94的二维平面,即分成94行,94列,行号称为区号,从1~94编号,由第一字节标识;列号称为位号,也是从1~94编号,由第二字节标识。每一个汉字或图形符号在码表中都有各自的位置,字符的位置用它所在的区号(行号)及位号(列号)来表示,如下表1-1所示。因此,称之为汉字的区位码。区位码是汉字在计算机存储与交换的唯一数字代码,如汉字“大”的区号是20,位号是83,它的区位码是20-83,用双字节二进制码表示为00010100 01010011

1-1GB/T 2312-1980字符集的区位构成

欲详细了解GB/T 2312-1980标准具体规定内容的请进入

然而,在该汉字编码字符集(GB/T 2312-1980)中不仅对6763个汉字设置了区位码,同时还对682个非汉字图形字符(也称图形符号),其中包括有ASCII字符集中的图形符号,被置于1~9区(汉字图形字符是置于16~87区的),而在这里,这些图形符号是按照GB/T 2311-80ISO/IEC 2022)规定的7位编码扩充方法,原ASCII字符集(ISO/IEC 646,等同采用为国内标准是GB/T 1988-80)中是采用7位编码的(目前在计算机内的ASCII中的图形字符就是7位编码)。这就有可能存在7位编码扩充与7位编码的冲突的问题。

欲详细了解ASCII编码字符集介绍的请进入

需要指出的是:区位码源自于GB/T 2312,原因是它采用了区位编码方式。然而我国目前使用的权威汉字字符集是GB 18030《信息技术 中文编码字符集》。它采用的是单字节、双字节和四字节多字节编码方式,其中双字节编码部分包含了GB/T 2312所编码的图形字符(汉字和符号),关键是其双字节编码已不再采用94×94的区与位方式编码了。

欲详细了解GB 18030中文编码字符集的请进入

2、交换码(国标码)

相对于区位码,为了避免与ISO 2022中用于通信的控制字符(0x00~0x1F)和空格字符(0x20)发生冲突,每个汉字的区号和位号必须分别加上32(即二进制0010 0000)。经过这样处理得到的代码称为汉字的“交换码”。因此,“大”字的交换码是:00110100 01110011

也就是说,交换码(国标码)相当于将区位码向后偏移了32,以避免与ASCII字符中的控制符号(具有数据的控制功能,不可显示的符号字符,包括空格字符)相冲突。之所以如此,是因为GB/T 2312没有对ASCII字符中的33个具有控制功能的符号进行重新编码。为什么是后偏移了32而不是33,这是因为区位码中的区编号和位编号都是从1开始计数的,不像ASCII码是从0开始计数的。

3、机内码

当区位码变换为交换码(国标码)后,仍然不能在计算机内使用(存储)。因为文本中的汉字字符与西文字符经常混合在一起使用,汉字信息如不予以特别的标识,它与单字节的标准ASCII码就会混淆不清。还有因为国标码虽然相较于区位码避开了ASCII码中(0~32的前33个控制字符),但并没有避开ASCII码中的英文字母、数字和符号等可显示可打印的图形字符(33~126,共94个字符)。

于是,常采用的方法之一就是把一个汉字看成两个扩展ASCII码,使表示GB 2312汉字的两个字节的最高位都等于“1”。相当于每个字节都再加上128(即二进制的1000 0000;十六进制的0x80)。这种高位为“1”的双字节(16位)汉字编码就称为GB 2312汉字的“机内码”,有时简称内码。目前,这种表示方式已经成为GB 23122汉字内码的一种事实上的标准。上面所说的“大”字的机内码是:10110100 11110011B4F3)。

下式和下图1-3给出了区位码、交换码与机内码间的关系,以供参考。

机内码 = 交换码 + 1280x80= 区位码 + 320x20+ 1280x80= 区位码 + 1600xA0

1-3:区位码、交换码与机内码间的关系

4、其它内码:字形码、汉字地址码

汉字字形码和汉字地址码也都是属于存储在计算机内的汉字编码,用以汉字的输出(即显示、打印等)。

字形码就是表示汉字字形信息(结构、形状、比画等)的编码,它的实现方法通常分为点阵形式和矢量形式,点阵形式是日常使用较多的形式,此时,字形码是确定一个汉字字形点阵的代码,也叫字模或汉字输出码。字形码就是这个汉字字形的点阵代码根据显示或打印质量的要求,汉字字形编码就有16×1624×2432×3248×48等不同密度的点阵编码。点数越多,显示或打印的字体就越美观,但编码占用的存储空间也越大。如16×16点阵的字形码表示汉字是16行,每行16个点,一个点需要1位二进制代码,16个点需用16位二进制代码(即2个字节),共16行,所以需要16行×2字节/=32字节,即16×16点阵表示一个汉字,字形码需用32字节。

当一个汉字需要输出(显示或打印)时,需要将汉字的机内码(如上述)转换成字形编码。汉字的字形点阵要占用大量的存储空间,通常将所有汉字字形编码集中存放在计算机的外存储卡(器)中,称为“字库”,不同字体(如宋体、楷体等)对应不同的字库。需要时才到字库中检索汉字并输出,为避免大量占用宝贵的内存空间,又要提高汉字的处理速度,通常将汉字字库分为一级和二级,一级字库在内存,二级字库在外存。

我国发布有大量的关于点阵字形码的编码国家标准(GB/T)及电子行业标准(SJ/T),这些标准是针对不同汉字字体、不同点阵、不同汉字字符集(如GB/T 2312GB/T 13000GB 18030等)而进行编码规范的。如GB/T 25899.1-2019《信息技术 通用编码字符集(基本多文种平面) 汉字32点阵字型 1部分:宋体》,它规定的是GB/T 13000字符集和GB 18030字符集中的汉字的32点阵宋体字型,举例“永”字的示意图如下图1-4所示。

1-432点阵汉字“永”的宋体字型示意图

由上述字形码介绍可知,字形码是存放在外存储器里,每一个字模都有自己的存放地址,以便计算机提取字模之用。确定字形码地址的二进制编码就是汉字地址码。

二、关于外码:汉字输入码

对于计算机上汉字编码的外码,主要是指计算机汉字输入码。计算机使用者通过汉字输入码将汉字输入到计算机中进行汉字信息的处理。我们知道,计算机输入汉字的方法主要有两种途径:一种是自动识别输入,包括汉字的自动识别和汉语言语的自动识别;另一种就是汉字键盘输入。而汉字键盘输入则是人们常用的方法,这里重点介绍计算机键盘输入编码。

计算机键盘是由西方人根据西方文字的特点而设计,已经成为标准键盘,或称通用键盘。那么对于汉字的键盘输入,只有在该通用键盘上,结合汉字的特点(部首、部件、笔顺、注音),通过编码将键盘上相应的按键一一对应,而转换(调用或提取)成计算机中的汉字内码(区位码及机内码)。因此,汉字键盘输入码的作用:一是利用汉字的形、音及其它相关信息把通用键盘相应键位(一个或一组)的绑定;二是建立与计算机中相应汉字机内码的对应关系。

汉字键盘输入码,对于计算机使用者来讲,重点是要掌握汉字信息与键位的对应方法,这就要汉字键盘输入码的编码方法易学易用。而我们日常常用的输入编码方法有:数字编码、字音(拼音)编码(如全拼输入法、双拼输入法等)、字形(部首、笔画及部件)编码(如五笔输入法、笔画输入法等)、字音字形结合编码、智能编码等等,它们各自的特点详见于下表2中。

2:常用汉字键盘输入编码方法的特点

由于篇幅问题,这里不对每种汉字键盘编码输入法进行介绍。关键是,我国国家标准GB/T 19246《信息技术 通用键盘汉字输入通用要求》规定了信息技术产品中用通用键盘进行汉字输入时的通用要求,适用于基于通用键盘进行汉字输入的汉字输入法编码方案、汉字输入技术及其产品。对于上述提到的各种汉字编码输入法均应满足GB/T 19246规定的要求,包括总体性能要求(易学性、平均码长、重码字词键选率)、键位设置要求、编码字汇(汉字编码字符集)要求、编码规范( 汉字部首序与笔顺序及部件规范、拼音规范等)等等。

欲详细了解GB/T 19246标准具体要求的请进入

三、说明

由于我国的汉字是一种表意文字,因此其数量巨大,仅2022年版GB 18030中收纳编码的汉字的数量就达87887,如此之多的汉字计算机的信息处理(包括输入、存储、交换、传输、显示及输出等)是一个庞大的系统工程,因此需要其计算机汉字编码系统,包括其相应的内码和外码的建立、结合和使用,下图3示意了计算机汉字编码系统的一个总体关系结构,亦可以了解其内码和外码的关系。

3:计算机汉字编码系统总体关系结构示意图

另外,上述主要介绍的是计算机汉字的编码,因为汉字字符是重点。事实上,全面的说,应称为计算机中文的编码,因为它已包括了可显示/可打印的图形符号字符(标点符号、字母符号、数字及序号符号等等);同时包括我国少数民族的文字字符。

欲进一步了解我国字符编码字符集介绍请进入

附录
百度云服务器
© 2004-2024 通信人在线 版权所有 备案号:粤ICP备06113876号 网站技术:做网站