宋振邦:《汉字求元与形码编码》一
引言
笔者早年参加王永民“五笔字型”汉字输入法研究小组,读了一些资料,思考了一些问题,整理后写成了此书。后来经王永民介绍,《中小学电脑报》邀请我就此稿的摘要,写了一个简略和通俗的讲座。(见该报2000.09.11-12.04共12期的连载)。
该报的“编者按”介绍了一点情况转录如下:“曾经看过中学生...发明中文输入法的报道,从中可见中小学生中亦有喜爱汉字编码、希望创建自己独到输入法者。为此我们特邀石油信息工程所所长,研究员,中国计算机学会会员,河南省计算机学会理事,南阳市计算机学会理事长――宋振邦老师为同学们讲解汉字形码编码有关知识。”
这里的文字当然不是那个通俗的讲话,但也剔去了书中过多的论述,而采用了雅俗共赏的杂文形式。
1 计算机里汉字的码
汉字为什么要编码?初学者常常这样发问,我们就由此谈起。
其实任何一种文字,例如:日文、俄文、阿拉伯文,都需要编码,如果键盘上没有它们的文字或字母的话。把这些文字转换成键盘上已有的符号这就是编码,确切的说是输入编码。
那么键盘上有的英文字母就不需要编码了吗?这就把话题引向了深入。英文字母和数字都是人画出来的符号,那是给人眼睛看的,机器不懂。计算机只能读懂0和1的串,而且是约定好了的串。所以英文字母和数字也要转换为0和1的串,这也是编码,这是计算机和设计者作好了的,已经放在机器中。例如ascⅱ码,它原是美国信息交换标准码,现已通用于世界。
在计算机里汉字有三种码:内码、输入码和图形码(输出码)。内码也叫区位码,是从国标码那里对应过来的,国标的号:gb2312—80,它包含了6763个汉字。内码是紧凑的,与汉字一一对应,无重码。由于字数不超过一万,每个汉字以4位十进制数表示,如"南"——3647。汉字的文件都是以内码保存的,汉字的编辑也是在内码上作的;当然屏幕上显示的不是内码,它和在打印机上输出的一样,是图形码。图形码也叫输出码,有点阵拼的,也有矢量绘的;汉字点阵的图在存储器(卡)中作好了,每一个字给个地址,这样就和内码对应起来了。计算机里既然只有0和1又怎么画图呢?那方法简单——有点的地方用1,没点的地方是0不就行了吗。"点"可以绘任何形体。
汉字的点阵码对应可以打点的输出设备;图形码中的矢量码,对应笔式的绘图设备。矢量码把汉字的笔画看成由许多小线段连成的折线,每个线段都由一组三个参数唯一确定:位置(起始的)、方向和长度;一个笔画,乃至一个汉字就由若干组参数唯一确定了;在开头给一个地址也就与内码对应起来。
图形码也有国家标准,做成了各种规格的字库。
汉字的第三种码是输入码,国家没有统一的规定,现正是百家争鸣。无论哪种编码都要自带一个转换表和一个程序负责把自家的码变成内码。虽说是百家,但共识是有的,都在追逐着相同的目标,这就是我们后面要讲的。
汉字编码,汉字的数字化是文学与科学的交汇点,是中西方文化在工具层面上的交汇点。
2 汉字输入码的编写
汉字的输入码编码问题并不神秘,你也可以给汉字编码,你会查字典吗?如果把字典装在机器里,把查法写下来,怎样与键盘对应,这就是一个编码方案。最简单的方法,如"南"字在《新华字典》(1990)的326页第11字,那么可取"32611"为它的码,你手里的字典便是码本。电报码就是这样编的。电报码收集了7千左右汉字,分两篇,上篇以部首笔画定序,下篇以拼音定序,字的"码"是由字在上篇中所处的位置决定的。如"阳"从部首表查到左耳旁在70页开始,"阳"字在71页第22字从而它得到了
"7122"的编码。
四角号码也是一种汉字编码法:它把笔形分为10种,分别对应0,
……,9个数字,看汉字四个角的笔形,按左上、右上、左下、右下的顺序取笔形代号得到四位数的汉字编码。如"颜“字,按上述顺序,分别为点
(0)、横(1)、撇(2)、人(8),编码为"0128"。
举了上面两个例子,说明编码的实质是查字。现在汉语字典的查字法主要有两种:一是按拼音,一是按部首。在这个基础上形成汉字编码的两大流派:音码、形码,而形音码夹在其中。
汉语拼音拉丁化之后,音素分解为26个英文字母,全在键盘上,其中v对就打两点的u。所以汉字输入法的全拼方案很容易实现,更易于一般信息处理人员接受遂成为音码的主流。
由于汉字是音节字,由声母和韵母两个音素组成,如果声母中的复写拼音zh、ch、sh定义在某三个韵母对应的字母上;把韵母复写的ai、ao、ei等定义在声母对应的字母上,因为一个汉字不能连发两个声母或韵母,这便形成了双拼方案。应该说双拼方案在选择适当键位定义复合声母和复合韵母方面是一个突破。
顺便说一句,当我们看到借助拼音方案,汉字能这样容易地进入计算机从而方便地进行中文信息处理时,我们应当感谢汉字拉丁化的先驱者瞿秋白、吴玉章、林伯渠、萧三以及苏联汉学家郭质生、莱赫捷、史萍青等人,早在1929年他们就提出汉字拉丁化的方案。
3 形码编码的几件事
形码输入方法很多,一字一键和一笔一键是两个极端,想法朴素,实现简单,但给操作者带来不便,为一般编码者所不取。
既然汉字是由一些"部件"拼成的,为什么不把这些部件与键盘建立一种对应,让汉字拼形输入呢?应该说这种想法是十分自然的。它吸引了许多形码编码者的思惟。主要有三个问题:
一,什么是汉字的部件(或构件或字根或字元)选哪些,选多少?
二,怎样与键盘建立起对应,用多少健,部件与键位怎么分配?
三,怎样拆取汉字的部件,按什么顺序,取多少个来定码?
对上述问题的深入思考又引导我们进入"汉字求元","形码编码"和"方案优化"领域。不过在此之前,我们还要廓清几个概念。
在本文中,我们把“汉字求元”的问题分为两级,两个层次,一个是讨论汉字怎样拆分成构件。一个是怎样从构件中选取字元。所谓`字元',我们认为它是比构件更基本也更明确的概念,基本--指它能生成其它构件,因而也就能生成字集中的全部汉字,正是在这个意义下,称它为`元';明确--(1)明确的形,即是说有固定的笔画组合;(2)明确的量,字元数量是一定的;(3)明确的序,字元与计算机键盘的键位有固定的匹配,一对一或多对一,可以一位多元,但不能一元多位。以上可算本文对字元的定义。
有了构件和字元两个概念,自然也就有了对汉字的两种拆分:求件拆分和求元拆分。构件是汉字自然拆分的结果,是由汉字的结构形态决定的,它不依赖于任何编码方案,是公共的。而字元却是一个编码方案给出的,不同的方案会在构件中选取不同的元素作为字元。所以求元拆分是一种属于编碥码方案的限定拆分。一般来说,字元是构件的一个子集。这也是自然的,谁能用`全部'构件作输入方案?而对于构件来说既然没有明确的构造性的定义,又怎能确定它的形态和数量呢?
另一个概念是码元,它是计算机键盘上的符号,它也与编码方案有关,不同的方案在键盘上取的键位不同,取的符号和数量不同,如王码中的五笔画法,就只取小键盘上的1至5这5个数字键。所谓汉字输入的编码方案主要一部分就是它的字元与键盘码元的匹配。
上述,关于`构件',`字元'与`码元'的说明是笔者给出的,限于本文的讨论。它们在别处的含义就与此无关了。
-全文完-
▷ 进入行吟者的文集继续阅读喔!