首页 理论教育汉字的表示方法:信息技术教程

汉字的表示方法:信息技术教程

【摘要】:汉字在计算机内的表示虽然汉字使用不同的输入码或其他方法输入计算机,但同一个汉字在计算机内部的编码仍然是一样的。在计算机内部,汉字的区号和位号分别用1个字节表示,为了与ASCII码有所区别,把字节的最高位均规定为1。BIG5使用了与GB 2312大致相同的编码范围来表示繁体汉字。其简化方案是使用两个字节表示编码,称为“UCS-2”。

西文是线性文字,字符数量少,而汉字是表意文字,属于大字符集,字符数量巨大,这给汉字在计算机内的表示、传输、处理、输入和输出带来了一系列的问题。

(1)汉字输入码

汉字输入码是用来完成汉字输入的汉字编码,也称为汉字的外码。汉字输入码要求有如下特点:易学、易记、效率高、重码少、容量大等。但到目前为止,还没有一种在各方面均表现出色的汉字输入码。

一般汉字输入码可分为以下4类:

①字音编码,是基于汉语拼音的编码,如智能ABC、全拼、微软拼音等。这类编码简单易学,适合非专业人员,但它的重码多,需要增加选择操作。

②字形编码,是根据汉字的字形分解归类的编码,如五笔字型和表形码。这类编码重码少,输入速度快,但规则比较难,不易上手。

③形音编码,它吸取了字音和字形编码的优点,规则相对简单,重码相对少,但学习仍不易。这类编码有自然码等。

④数字编码,使用一串数字来表示汉字的编码,如区位码、电报码等。它们难以记忆,很少使用。

另外,汉字除了可以使用键盘输入外,还可以使用扫描仪和相应的软件进行扫描输入识别,或使用书写板进行手写汉字联机识别,甚至可以使用麦克风通过口述的方式输入汉字。

(2)汉字在计算机内的表示

虽然汉字使用不同的输入码或其他方法输入计算机,但同一个汉字在计算机内部的编码仍然是一样的。

1980年国家标准总局颁布了第一个国家标准汉字编码——《信息交换用汉字编码字符集·基本集》(GB 2312)。在此标准中共收录了7 445个汉字和符号,为每个字符规定了标准代码,以便在不同计算机系统之间进行汉字信息交换。

GB 2312由三部分组成。第一部分是字母、数字和各种符号共682个,统称为图形符号;第二部分是一级常用汉字,共3 755个,按照汉语拼音排序;第三部分是二级常用汉字,共3 008个,按偏旁部首排序。

GB 2312的所有字符共分为94个区(即01~94行),行号称为“区号”;每个区再分为94个位(即01~94列),列号称为“位号”。某汉字所在的区号和位号共同组合成该汉字的区位编码,称为“区位码”。(www.chuimin.cn)

例如,“大”字的区号是20,位号是83,则区位码为20 83,用二进制表示为:0001010001010011。仔细观察一下,“00010100”是不是也可能表示ASCII码表中的“DC4”,“01010011”也可能表示ASCII码表中的“S”?计算机如何理解这是两个ASCII码值还是表示一个汉字呢?

在计算机内部,汉字的区号和位号分别用1个字节表示,为了与ASCII码有所区别,把字节的最高位均规定为1。这种最高位均为1的编码称为“机内码”,简称“内码”。

机内码与国标码、区位码有以下换算关系:

以“大”字为例,其区位码为20 83,区号和位号分别加32得到52 115,将52和115分别转换成二进制,得到国标码“0011010001110011”,再将两个字节的最高位置“1”,即各加上128,得到机内码为“1011010011110011”,最后转换成十六进制数,得到“大”字的机内码为B4F3H。

由于GB 2312规定的字符编码实际上与ISO 8859是冲突的,所以在中文环境下查阅某些西文文章,使用某些西文软件时,有时会出现乱码,实际上就是因为西文中使用了与汉字编码冲突的字符,被计算机系统生硬地翻译成中文造成的。

6 763个汉字显然不能表示全部的汉字,但由于当时计算机的处理和存储能力都有限,所以在制定标准时只包含了常用汉字,因此时常会遇到生僻字或繁体字无法输入到计算机中的问题。

为了解决这些问题,在1995年我国发布了GBK,全称为“汉字内码扩展规范”。GBK向下与GB 2312完全兼容,向上支持ISO 10646国际标准(即UCS),在前者向后者过渡的过程中起到了承上启下的作用。GBK编码采用双字节表示,在GBK 1.0中共收录了21 886个符号,汉字有21 003个。

GB 18030是最新的汉字编码字符集国家标准,于2000年发布并在2001年开始执行,它向下兼容GBK、GB 2312和CJK(Chinese Japanese Korean,它包含了来自中国、日本、韩国的汉字)编码,解决了汉字、日文、韩文和中国少数民族文字组成的大字符集计算机编码问题,满足中国、日本和韩国等东亚地区国家信息交换的多文种、大字量、多用途、统一编码格式的要求。

由于历史原因,中国的台湾香港等地区还在使用繁体汉字,他们制定了一套表示繁体汉字的字符编码,称为“BIG5汉字编码标准”(简称“大五码”),采用双字节表示,但不兼容简体汉字。BIG5使用了与GB 2312大致相同的编码范围来表示繁体汉字。同样的编码在祖国大陆和台湾地区的编码标准中实际上表示的是不同的字符。当大陆的计算机遇到BIG5编码的文字时,就会将其转换成默认的GB 2312编码的文字,因而形成乱码。

由于历史和文化的原因,日文和韩文中也包含许多汉字,像汉字一样拥有大量的字符,它们的字符编码也同样与汉字编码有冲突。《中文之星》《南极星》等软件就是用于在这些编码中进行识别和转换的专用软件。

20世纪80年代后期,互联网的出现彻底改变了人们的生活。在一切都在数字化的今天,文件中的数字到底代表什么字?问题的根源在于有太多的编码表。如果全球都使用一个统一的编码表,那么每个编码就会有一个确定的含义,就不会再有乱码的问题。

于是80年代成立的Unicode协会制定了一个能够覆盖几乎任何语言的编码表,全称是“通用多八位编码字符集”(Universal Multiple-Octet Coded Character Set,简称为UCS)。UCS编码空间大,但效率低。其简化方案是使用两个字节表示编码,称为“UCS-2”。