在非数值信息中,文字信息是计算机处理过程中使用最频繁的信息。文字信息由字符组成,世界上存在着数以万计的文字符号,在我国,常用的字符包括西文字符(字母、数字及各种符号)和中文字符。计算机是以二进制的形式存储和处理数据的,因此字符也必须按特定的规则进行二进制编码才能进入计算机。对字符进行编码,首先确定需要编码的字符总数,然后将每个字符指定一个唯一的编号,即完成字符的编码。编码值是一个数,可以被转换成二进制数,但它没有数值意义,仅作为识别与使用这些字符的依据。
1.西文字符的编码
计算机中最常用的字符编码是ASCII码(American Standard Code for Information Interchange,美国信息交换标准码),编码工作于1967年完成。ASCII码有7位码(标准)和8位码(扩展)两种版本。国际通用的是7位标准ASCII码,用7位二进制数表示一个字符的编码,共有27=128个不同的编码值,相应可以表示128个不同字符的编码,如表1-4所示。
表1-4 ASCII码(美国信息交换标准码)
ASCII码表对大小写英文字母、数字、标点符号及控制符等特殊符号规定了编码,表中每个字符都对应一个数值,称为该字符的ASCII码值。其排列次序为b6b5b4b3b2b1b0,b6为最高位,b0为最低位。值得注意的是,尽管标准ASCII码只有7位,但在计算机中仍然使用一个字节来存储一个标准ASCII字符,该字节的最高位b7为0。
ASCII码表中有33个(前32个及最后一个)控制字符,这些字符不能被显示或打印,主要用于打印格式控制,对外设进行控制操作,以及数据通信时进行传输控制等,但目前使用不多。例如,“CR(Carriage Return)”表示回车、“BS(BackSpace)”表示退格等。
除控制字符外,ASCII码表还包括26个大写字母、26个小写字母、10个数字、32个符号及一个空格,共95个可显示字符,也称为图形字符。
ASCII码表编码存在着一些规律。其一,数字、大写字母、小写字母都是顺序排列的;其二,数字的ASCII码值高4位为“0011”,低4位为数字转换成二进制的值,如“8”的ASCII码值为“0011 1000”(8D=1000B);其三,小写字母比大写字母的码值大32,即大写字母b5位的值为0,而小写字母b5位的值为1,这有利于大、小写字母之间的编码转换。
根据ASCII码表的编码规律,只需要记住几个特殊的字符编码,就可以计算出其他的字母或数字的编码或字符。例如:
(1)“a”字符的编码为110 0001,对应的十进制数是97,则“b”的编码值是98。
(2)“A”字符的编码为100 0001,对应的十进制数是65,则“B”的编码值是66。
(3)“0”字符的编码为011 0000,对应的十进制数是48,则“1”的编码值是49。
另外,应注意ASCII码表中各类符号出现的顺序。
ASCII码值存在下列关系:
控制字符(除DEL外)<空格<数字<大写字母<小写字母
2.汉字的编码
为了使计算机能够处理、显示、打印、交换汉字字符,同样也需要对汉字进行编码。由于汉字是表意文字,字符数以万计。因此,汉字的编码及处理比西文更为复杂。
1)汉字的处理过程
汉字的一般处理过程如图1-16所示。输入汉字时,通过键盘输入每个汉字规定的代码(即输入码,如拼音、五笔等),由输入法程序将汉字的输入码转换为相应的国标码,然后再转换为机内码,汉字即可以在计算机中存储和处理了。输出汉字时,先将汉字的机内码通过规定的对应关系转换为汉字地址码,然后在汉字库中提取汉字的字形码,最后根据字形数据显示或打印出汉字。
图1-16 汉字的处理过程
2)汉字输入码
为将汉字输入计算机而编制的代码称为汉字输入码,也叫外码。
汉字输入码是利用计算机标准键盘上按键的不同排列组合来对汉字的输入进行编码。接收用户输入的外码,并将其转换成内码的程序称为输入法程序,简称输入法。目前,汉字输入法种类繁多,已多达数百种。一种好的输入编码应具有以下特性:
(1)编码短,可以减少击键的次数;
(2)重码少,可以实现盲打;
(3)好学好记,便于学习和掌握。
但目前还没有一种符合上述全部要求的汉字输入编码方法。常用的键盘输入法主要有区位码、音码类和形码类。
(1)区位码。
区位码用4个数字对汉字进行编码,如“中”字的区位码为“5448”。区位码是唯一一种没有重码的输入码,这是它最大的优点;区位码最大的缺点是难以记忆。另外,区位码只有4个数字,最多包含0000~9999一万个码位(实际只有8836个),仅适合输入GB 2312—1980标准中的汉字。
(2)音码类。
音码类输入码以汉语拼音为基础,因此其最大的优点是无须特别学习。但由于汉字的同音字太多,因此其缺点是输入时重码较多。使用词组输入的方式,可降低重码率,特别是输入常用白话文时,音码类也能获得较高的输入速度。
音码类输入法的种类很多,如微软拼音、智能ABC、QQ拼音、搜狗输入法等。
(3)形码类。
形码类是根据汉字的字形对汉字进行编码。形码类有多种不同的编码方案,其中最成功的是由王永民在1983年发明的“五笔”输入码。与音码类不同,形码类输入码需要特别学习,例如,使用五笔输入码需要记住字根表、理解拆字规则,并需要反复练习。形码类的优点是重码少,输入速度快。随着拼音输入法的智能化,使用形码类的用户越来越少。目前,仅有一些特殊的从业者要求使用五笔输入法。
常用的形码类输入法主要是五笔输入法,如王码五笔、QQ五笔、极点五笔等。
3)汉字区位码与国标码(www.xing528.com)
汉字编码从1980年发布的第一个国家标准GB 2312—1980至今,经历了若干次扩展和更新。在此主要介绍GB 2312—1980字符集。
1980年,我国发布了国家汉字编码标准GB 2312—1980《信息交换用汉字编码字符集——基本集》(简称GB码或国标码)。GB 2312—1980收集了常用的6 763个汉字,并将其分成两级:一级汉字有3 755个,按拼音字母的次序排列;二级汉字有3 008个,按偏旁部首排列。由于一个字节最多只能表示256种编码,不足以表示6 763个汉字的,所以一个国标码用两个字节来表示一个汉字,每个字节的最高位为0。
国标码以区位码为基础。区位码将GB 2312—1980中的6 763个汉字分为94行、94列,代码表分94个区(行)和94个位(列)。由区号(行号)和位号(列号)构成了区位码。区位码最多可以表示94×97=8 836个汉字。区位码由4位十进制数字组成,前2位为区号,后2位为位号。例如,汉字“中”的区位码为5448,表示它位于第54区、第48位。注意,区位码不可看作一个4位的整数值。
在区位码中,01~09区为特殊字符,10~15区为用户自定义区,16~55区为一级汉字(3755个常用汉字,按拼音排序),56~87区为二级汉字(3 008个次常用汉字,按部首排序)。
区位码是一个4位十进制数,国标码是一个4位十六进制数。为避开ASCII表中的控制码(00H~1FH),以便与ASCII码兼容,汉字区位码与国标码之间有一个简单的转换关系。即将一个汉字的十进制区号和十进制位号分别转换成十六进制,然后再分别加上20H(十进制值为32,用于跳过ASCII码表中的控制字符),就成为汉字的国标码。
【例12】已知汉字“中”的区位码为5448,求其国标码。
4)汉字机内码
汉字内码是为在计算机内部对汉字进行存储、处理的汉字编码,它应满足存储、处理和传输的要求。将汉字存储到计算机时,区位码与国标码的最高位都为0,而ASCII码的最高位也为0,会引起歧义。例如,汉字“中”的国标码为5650H,而字母“V”“P”的ASCII码分别为56H、50H,因此,若某文件中的文字内容为5650H,它是代表汉字“中”?还是代表字母“VP”?显然,这是有歧义的。
将汉字国标码的两个字节的最高位改为1(加80H),即为汉字机内码。区位码、国标码和机内码的转换关系如图1-17所示。
图1-17 区位码、国标码和机内码的转换关系
【例13】已知汉字“中”的区位码为5448,求其机内码。
5)汉字字形码
经过计算机处理的汉字信息,如果要显示或打印出来提供阅读,则必须将汉字内码转换成人们可读的方块汉字。汉字字形码又称汉字字模,用于汉字在显示屏或打印机输出。汉字字形码通常有两种类型:点阵字形和矢量字形。
用点阵表示字形时,汉字字形码指的就是这个汉字字形点阵的代码。根据输出汉字的要求不同,点阵的多少也不同。常用汉字点阵字形有16×16点阵、24×24点阵、32×32点阵、48×48点阵等。
图1-18显示了汉字“啊”的16×16字形点阵和代码。点阵字形的编码方法是,在一个16×16的网格中用点描出一个汉字,每个小格用1位二进制编码表示,有点的用“1”表示,没有点的用“0”表示。这样,从上到下,每一行需要16个二进制位,即2个字节。如第一行的点阵编码是0004H,描述整个汉字的字形需要32 B的存储空间。对于m×n的点阵,保存一个汉字需要的存储空间为m×n/8个字节。
点阵规模越大,字形越清晰美观,所占存储空间也越大。两级汉字大约占用256 KB。点阵表示方式的优点是处理方法简单;缺点是字形放大后产生严重的锯齿现象,效果差。
汉字的点阵字形编码仅用于构造汉字的字库,一般对应不同的字体(如宋体、楷体、黑体)有不同的字库,字库中存储了每个汉字的点阵代码。字模点阵只能用来构成“字库”,而不能用于机内存储。输出汉字时,先根据汉字内码的对应关系转换成汉字地址码,再通过汉字地址码提取汉字的字形码,根据字形数据显示和打印出汉字。
矢量表示方式存储的是描述汉字字形的轮廓特征,当要输出汉字时,通过计算机的计算,由汉字字形描述生成所需大小和形状的汉字点阵。矢量化字形描述与最终文字显示的大小、分辨率无关,因此可产生高质量的汉字输出。Windows中使用的TrueType技术就是汉字的矢量表示方式,它解决了汉字点阵字形放大后出现锯齿现象的问题。
图1-18 汉字“啊”的16×16字形点阵和代码
6)其他汉字内码
GB 2312—1980国标码只能表示和处理6 763个汉字,为了统一表示世界各国、各地区的文字,便于全球范围的信息交流,各级组织公布了各种汉字内码。
(1)GBK。
《汉字内码扩展规范》简称为GBK(国标扩展)编码。GBK共收录了21 003个汉字,是GB 2312—1980码的扩充,但GBK不是国家标准,仅为“技术规范指导性文件”。
GBK码仍以2B表示一个汉字,第一个字节为81H~FEH,第二个字节为40H~FEH。虽然第二个字节的最高位不一定是1,但因为汉字内码总是2字节连续出现的,所以即使与ASCII码混合在一起,计算机也能够加以正确区别。目前的中文版Windows操作系统都支持GBK编码。
(2)GB18030。
国家标准GB 18030—2000《信息交换用汉字编码字符集基本集的补充》是我国继GB 2312—1980和GB 13000—1993之后最重要的汉字编码标准,是我国计算机系统必须遵循的基础性标准之一。GB 18030—2000编码标准是由信息产业部和国家质量技术监督局在2000年3月17日联合发布的,并且作为一项国家标准在2001年的1月正式强制执行。
GB 18030—2005《信息技术中文编码字符集》是我国自主研制的以汉字为主并包含多种我国少数民族文字(如藏、蒙古、傣、彝、朝鲜、维吾尔文等)的超大型中文编码字符集强制性标准,其中收入汉字70 000余个。
(3)BIG5。
BIG5(大五码)是我国台湾、香港等地区普遍使用的一种繁体汉字编码标准。繁体版本的Windows操作系统支持BIG5码,但要在简体版操作系统中运行使用BIG5作为内码的程序,必须通过内码转换程序才能正确显示文字信息。
(4)UCS。
UCS码(Universal Character Set,通用字符集)是国际标准化组织(ISO)为各种语言字符制定的编码标准。ISO/IEC 10646字符集中的每个字符用4B(组号、平面号、行号和字位号)唯一地表示,第一个平面(00组中的00平面)称为基本多文种平面(Basic Multilingual Plane,BMP),包含字母文字、音节文字,以及中、日、韩(CJK)的表意文字等。(5)Unicode。
Unicode(统一码)字符集也是一个国际标准。Unicode字符集有多种编码形式,如:UTF-8、UTF-16、UTF-32等。Unicode主要用来解决多语言的计算问题,如不同国家的字符标准,允许交换、处理和显示多语言文本,以及公用的专业符号和数学符号等。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。