优麒麟技术论坛

 找回密码

汉字编码历史回顾(TR) [复制链接]

汉字编码历史回顾

发表于 2006-11-9 19:52:15 |只看该作者 yima |倒序浏览


汉字信息处理基础
    1  汉字代码体系
    在汉字信息处理系统中存在着多种汉字编码。一般来说,在系统的不同部位,可根据其环境给汉字定以相应的编码。从而在汉字信息系统中存在着数种编码,这些编码构成了一个汉字代码体系。为了适应汉字信息处理系统各组成部分对汉字进行处理的不同要求,系统应提供各种程序模块来完成这些代码的转换和处理。
    1.1  汉字输入码
    目前,将汉字信息输入计算机的方法有三种:第一种是用键盘将汉字信息输入计算机,称为汉字的键盘输入;第二种是用文字字形识别的方法将汉字信息输入计算机,称为汉字的字形识别输入;第三种是用语音识别的方法将汉字信息输入计算机,称为汉字的语音识别输入。其中以第一种方法使用最为广泛,后两种均未完全达到实用水平。汉字的键盘输入中又可以分为两类,一类是用字母、数字或符号将汉字编成代码的间接输入;另一类是以整字从大键盘上直接输入汉字。目前多采用前者,后者极少使用。因此,汉字的键盘输入通常就指汉字编码的间接输入。
    汉字输入码就是为输入汉字而对汉字编制的代码。由于这种编码是由计算机外部的用户产生的,故又称为汉字外部码(或外码)。汉字输入码位于人机界面上,为用户所用,所以它应该是面向用户的,应易于用户熟悉、掌握和接受。因而常常要求这种编码的规则简单、易于记忆、操作方便和输入速度高等。
    我国有不少语言文字研究者和计算机专业人员在从事汉字输入码的研究。到1990年底,我国大陆地区研制出的汉字输入码已达600多种,我国台湾地区也研制出了100多种汉字输入码。在如此众多的汉字输入码中,约有十分之一左右已经在计算机上实现,并投入实际使用。尽管目前国内的汉字输入码中,已经有十余种被用户公认为“主流型输入码”,但是当前对汉字输入码的研制仍处于“百花齐放,百家争鸣”的状态,仍存在相当大的分散性,缺乏统一的规范和标准。
    汉字输入码根据其编码的规则,可以分成流水码、音码、形码和音形结合码四种。这四种码各有千秋,目前还没有哪一种码能包罗万象和广博众长。因此,计算机汉字信息处理系统都能支持多种汉字输入码,以满足不同用户和不同用途的需要。
    (1)流水码
    将被编码的汉字按一定顺序排好,然后逐一赋于一个号码,这个号码就作为该汉字之编码,这样形成的编码称为流水码。这类编码的特点是整齐、简单,但是编码与汉字的属性没有直接的对应关系,因此用户较难记忆和掌握这种码。
    (2)音码
     音码根据被编码汉字的读音来确定该汉字的编码,并由此而得名。这种编码的特点是编码规则与音素有关,只要具有汉语拼音的基础,掌握起来并不困难。这种编码的最大弱点是只能对认识的字得出编码,对于那些不知道读音的字,则无能为力。
    (3)形码
    形码根据被编码汉字的字形来确定该汉字的编码,并由此而得名。这种编码的特点是编码规则与形素有关,根据汉字的字形就能得出其编码。也就是说,一个汉字只要能写出来,即使不会读,也能得到其编码,这就可以弥补音码的不足之处。
    (4)音形结合码
    音形结合码根据被编码汉字的读音和字形来确定该汉字的编码,并由此而得名。这种编码的编码规则既与音素有关,又与形素有关。这种编码企图吸取音码和形码之长,形码有形象、直观的优点,音码有实施简单、易于接受的优点。音形结合码综合两者之长,取形码的部分形素和音码的部分音素,这样可以获得较好的效果。音形结合码可以分为两种,即音形码和形音码,前者以音素为主,后者以形素为主。
    1.2汉字内部码
    汉字内部码是汉字信息处理系统内部标识汉字的编码,也称为汉字机内码。汉字信息处理系统由信息采集、信息传输、信息存贮、信息加工和信息利用等部分组成,汉字在这些部分中均以相应的代码存在,这些代码有传输码、存贮码和运算码,它们均属汉字内部码。目前,绝大多数汉字信息处理系统中,为了简单起见,其传输码、存贮码和运算码是统一的,从而系统内只有一种汉字内部码。
    迄今为止,汉字内部码还没有统一的标准,在设计汉字信息处理系统时,必须自行设计汉字内部码。汉字内部码的设计是一个系统工程问题,它将会涉及到系统的各个方面,最终会影响系统的性能及效率。一般来说,设计汉字内部码时,应追求以下基本目标:编码空间应该足够大;中西文兼容性要好;具有较好的定义完备性;具有系统实现的简单性和可能性。国内使用的汉字内部码方案有多种。汉字内部码一般均具有特殊的标识,以与西文内部码区别开来。我们可以根据汉字内部码中的标识特征,把汉字内部码分为四种类型:位标识型、字标识型、串标识型、无标识型。下面分别简述这四种类型的汉字内部码。
    (1)位标识型汉字内部码
    位标识型汉字内部码用编码字节中的位来标识汉字内部码,以与西文内部码相区别。这种汉字内部码为二字节编码,利用字节的最高位置1作标识,而西文内部码为7位编码,字节的最高位是不用的,故这种汉字内部码不会与西文内部码发生混淆。
    (2)字标识型汉字内部码
    字标识型汉字内部码用一个特殊定义的字节来标识汉字内部码,以与西文内部码相区别。这个特殊的标识字节可以选用某个不使用的西文字符。标识字节通常作为编码的首字节。
    (3)串标识型汉字内部码
    串标识型汉字内部码就是在汉字成串出现时,在一串汉字代码的前面和后面各加一个标识符,分别称为前标识符和后标识符。前标识符和后标识符均要选用系统不用的西文
字符。系统把前标识符和后标识符之间的内容解释为一串汉字代码。汉字代码可以定义为二字节的或三字节的。
    (4)无标识型汉字内部码
    无标识型汉字内部码与前面三种汉字内部码不同,它不是凭借标识位或标识符来区别于西文内部码,而是根据编码的字符的特殊序列来与西文字符串相区别。所以,这种编码的字符组成序列应该是西文字符串中不可能出现的字符序列,显然必须通过大量的统计后才能得到。我们也可以说,无标识型汉字内部码用特殊的编码字符序列来标识汉字内部码。
    1.3汉字交换码
    汉字交换码是汉字信息处理系统之间或与通信系统之间进行信息传输时,对每个汉字所规定的统一编码。使用交换码可以达到系统设备之间或记录媒体之间的信息交换的目的。显然,汉字交换码位于一台机器和另一台机器(包括输出设备和记录设备)之间。汉字交换码本身的作用就意味着它必须具有统一的标准格式。
    我国制定了汉字交换码的统一标准GB2312,这是一种双7位编码,它为基本集中的汉字和符号确定了交换码。以后国家又制定了GB7589和GB7590,分别为辅二集和辅四集中的汉字确定了交换码。
    1.4汉字地址码
    汉字地址码是用来指出汉字字形信息在汉字库中存放的逻辑地址的编码。当要向输出设备输出汉字时,必须通过汉字地址码才能从汉字库中取到所需的汉字字形信息,然后在输出设备上获得汉字字形的输出。地址码的形式,随汉字库驻留的存贮介质不同而不同,如果汉字库驻留内存,则汉字地址码为内存地址值,如果汉字库驻留磁盘,则汉字地址码为磁盘空间地址值。汉字地址码的设计要考虑与汉字内部码有一个简单的映射关系,以便输出汉字时,可以根据汉字内部码简捷地从汉字库内获得其字形信息。通常,汉字库内的汉字字形信息是按一定顺序连续存放的,故汉字地址码是连续有序的。
    1.5汉字字形码
    汉字字形码是表示汉字字形信息的编码,目前汉字信息处理系统中使用的汉字字形大多是数字式的,即以点阵的方式形成汉字,所以汉字字形码就是确定一个汉字字形点阵的代码,是汉字字形点阵的数字表示形式。全点阵的字形中的每一点用一个二进制位来表示,随着字形点阵的不同,它们所需要的二进制位数也不同,即所需的字节数也不同。例如,24×24的字形点阵,每字共需72个字节,32×32的字形点阵,每字共需128个字节。与每个汉字对应的这一串字节就是汉字的字形码,它存放在汉字库内。
    1.6  汉字代码之间的关系
    汉字信息处理系统内存在着各种各样的汉字代码,它们为系统的相应部分标识汉字。在系统工作过程中,汉字信息在系统的各部分之间流动,流到某个部分就要用该部分所需
的汉字代码来表示汉字。因此,汉字信息在系统内的流动过程就是汉字代码的转换过程。从某种意义上可以把汉字信息处理系统看成是一个汉字代码转换系统,它实现多种汉字代码之间的转换。图3.1给出了汉字信息处理系统中各种汉字代码之间的关系。
    下面针对图3.1,解释系统内各种汉字代码之间的关系。图中的键盘管理模块、通信管理模块、汉字处理模块、显示管理模块、打印管理模块和字库管理模块,都是汉字操作系统中的模块。
    用户从键盘输入汉字输入码,键盘管理模块把汉字输入码转换成汉字内部码,并把它传送给汉字处理模块。当系统欲向其它系统或设备传送汉字信息时,汉字处理模块就把汉字内部码传送给通信管理模块,该模块就把汉字内部码转换成汉字交换码,并传输给其它系统或设备。当系统从其它系统或设备接收汉字信息时,通信管理模块把其它系统或设备送来的汉字交换码转换成汉字内部码,然后把它传送给汉字处理模块。当系统欲显示汉字时,汉字处理模块把汉字内部码传送给显示管理模块,该模块又把汉字内部码传送给字库管理模块,该模块把汉字内部码转换成汉字地址码,然后从汉字库内取出汉字字形码,字库管理模块把字形码传送给显示管理模块,显示管理模块再把字形码送显示器,在屏幕上显示汉字字形。当系统欲打印汉字时。它所作的工作与显示汉字类似,只是最后一步是把汉字字形码送打印机,然后打印机在纸上印出汉字字形。
ss.GIF (4.77 KB, 下载次数: 24)






发表于 2013-4-29 18:55:13
回复

使用道具 举报

汉字编码历史回顾(TR) [复制链接]

发表于 2006-11-9 21:29:52 |只看该作者 yima


代码页(code page 供计算机正确解释并显示数据的字符集。通常,不同的代码页对应不同的平台或语言,常用于国际应用程序中。)。代码页是一个字符集,计算机用这个字符集来准确地显示数据,控制国际化字符。国际化字符包括具有注音符号的字符。注音符号(重音或其他符号,放置于字母的上方、下方或中间,以示发音与原字符不同。[重音字符:accented characters一些包含注音符号的字符,如 é 和 ä。;国际字符:international characters含有注音符号的字符,如 é。Visual FoxPro 接受此类字符,因而可对非英语语种的数据进行操作。]放置在字母的上方、下方或覆盖其上,表示该字母与未加标记的字母发音不同。最常用的注音符号有:抑音符(à 中的 `)、尖音符(á 中的 ′)、母音符(a 中的 ^)、鄂音符(? 中的 ~)、母音变化符(? 中的 ¨)、圆音符(? 中的 °)和(? 中的 /),均用于元音的发音。

通常,在处理数据时,会根据适当的代码页自动标识数据。但是,如果用人工方式给一个表指定代码页或是由于其它原因引起代码页改变,用户可能就无法识别所显示的全部或部分数据。有关代码页的详细内容,请参阅“处理代码页”。

有些语言,象中文、朝鲜语和日语,使用 DBCS(双字节字符集)表示它们的数据。如果应用程序要在这种环境下运行,就需要使用特定的字符串处理函数和排序序列,才能使应用程序正常执行。有关在 DBCS 环境下工作的详细内容,请参看本章稍后的“处理双字节字符集”。




 楼主| 发表于 2013-4-29 18:55:45
回复

使用道具 举报

汉字编码历史回顾(TR) [复制链接]

发表于 2006-11-10 21:11:21 |只看该作者 yima


原帖由 foxsky 于 2006-11-10 08:33 发表
yima解释的很详细
由yima作为评判员好了


这是《CCDOS操作系统》的一段。可以看到当时的情况。

这本书编写时UCDOS还没有流行。输入法类型中缺少意码。UCDOS提供的英中输入法,是典型的意码,它不是形码,也不是音码。

各拼音文字都用了代码页,双字节编码又五花八门。为编程带来无数麻烦,编码已影响地球村文化的交流了,因此,统一码编码是必然的。


在我看来,现在的操作系统就是用CCDOS处理汉字的方法处理一切字符。系统大大简化了,再不用截取显示中断了。




 楼主| 发表于 2013-4-29 18:57:00
回复

使用道具 举报

小黑屋|优麒麟    

GMT+8, 2022-5-20 08:25 , Processed in 0.020879 second(s), 17 queries .

Copyright ©2013-2022 Ubuntu Kylin. All Rights Reserved .

ICP No. 15002470-2 Tianjin

快速回复 返回顶部 返回列表