购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2.3 字符在计算机中的表示

文本是计算机中最常见的一种数据形式,包括字母、标点、符号、西文字符和汉字字符等。由于计算机只能直接接受、存储和处理二进制数,所以必须将各种文本信息按照规定的编码转换成二进制数代码。

1.ASCII码 ASCII码(American standard code for information interchange,美国标准信息交换码)是由美国国家标准局提出的一种信息交换标准代码,是目前计算机中使用最广泛的西文字符编码。ASCII虽然是美国国家标准,但已经被国际标准化组织(ISO)认定为国际标准,在世界范围内通用。基本的ASCII字符集共有128个字符,其中有96个可打印字符,包括常用的字母、数字、标点符号等,另外有32个控制字符,如表1-4所示。

表1-4 标准ASCII字符编码表

续表

【例1-11】查找字母A的ASCII码。

要确定某个字符的ASCII码,在表中确定其位置后,根据其所在位置的相应列和行,将列中的高位码和行中的低位码合在一起就是该字符的ASCII码。从表1-4中查得字母A的ASCII码的高4位是0100,低4位是0001,即01000001,用十进制表示是65。按此方法,数字0的ASCII码是十进制数48,数字9的ASCII码是十进制数57等。

其中,常用的控制字符的作用如下。

LF(line feed):换行

SP(space):空格

CR(carriage return):回车

DEL(delete):删除

从表1-4中可以看出,十进制码值0~32和127(即NUL-US和DEL)共34个字符称为非图形字符(又称为控制字符),其余94个字符称为图形字符(又称为普通字符)。在这些字符中,0~9、A~Z、a~z都是顺序排列的,且小写比大写字母码值大32,这有利于大、小写字母之间的编码转换。

计算机的内部存储与操作常以字节为单位,即以8个二进制位为单位,因此一个字符在计算机内实际是用8位表示。正常情况下,最高位为0。

2.汉字编码 计算机处理汉字信息时,由于汉字具有特殊性,汉字的输入、存储、处理及输出过程中所使用的汉字代码不同。例如,用于汉字输入的输入码,用于机内存储和处理的机内码,用于输出显示和打印的字模点阵码(或称字形码)。各种汉字编码的关系如图1-8所示。

图1-8 汉字编码的关系

(1)汉字的输入码(外码) 汉字输入码是为了利用现有的计算机键盘,将形态各异的汉字输入计算机而编制的代码,简称外码。目前在我国推出的汉字输入编码方案已多达数百种,其表示形式大多用字母、数字或符号。编码方案大致可以分为三类。

①音码:以汉字拼音为基础,按照汉字的发音进行编码的代码,如全拼码、简拼码、双拼码等。这种输入法的优点是简单易学,几乎不需要专门的训练就可以掌握;缺点是汉字的同音字太多,重码率太高,按字音输入后还要选字,影响输入速度。现在的许多输入法增加了智能组词的功能,如搜狗拼音输入法、紫光拼音输入法等,很好地弥补了这方面的缺陷。

②形码:以汉字字形的固有特点为依据,按汉字书写的形式进行编码的代码,如广泛使用的五笔字型码、郑码等。优点是见字识码,首先拆分汉字,然后对应编码进行组合,对不认识的字也能输入,速度快;缺点是比较难掌握,需专门学习并记住字根,学会拆字和编码规则。

③音形码:以汉字的基本形为主、音为辅,或者以音为主、形为辅的一种音形结合的编码,如自然码。它集中了音、形两种码的特点,取形简单,容易掌握,降低了形码的拆字难度,既具有形码的速度,又具有音码的易学优点。

基于任何一种编码的输入法都是用户输入汉字的手段,在计算机内部都是以汉字的内码表示的。

(2)汉字的国标码、区位码 《信息交换用汉字编码字符集·基本集》是我国于1980年制定的国家标准(GB2312-80),是国家规定的用于处理汉字信息代码的依据。GB2312-80中规定了信息交换用的6763个汉字和682个非汉字图形符号(包括几种外文字母、数字和符号)。6763个汉字又按使用频度、组词能力及用途大小分成一级常用汉字3755个、二级常用汉字3008个。

在此标准中,每个汉字(图形符号)用两个字节表示,每个字节只用低7位。由于低7位中有34种状态是用于控制字符,只有94(128-34=94)种状态可用于汉字编码。因此,双字节的低7位只能表示94×94=8836种状态。

国标GB2312-80规定,全部国标汉字及符号组成94×94的矩阵。在该矩阵中,每一行称为一个“区”,每一列称为一个“位”。这样就组成了94个区(01~94区),每个区内有94个位(01~94)的汉字字符集。区码和位码简单地组合在一起(即两位区码居高位,两位位码居低位)就形成了“区位码”。区位码可唯一确定某一个汉字或汉字符号,反之,一个汉字或汉字符号都对应唯一的区位码。例如,汉字“学”的区位码为“4908”(即在49区的第8位)。

所有汉字及符号的94个区划分成如下四个组。

①1~15区为图形符号区,其中,1~9区为标准区,10~15区为自定义符号区。

②16~55区为一级常用汉字区,共有3755个汉字,该区的汉字按拼音排序。

③56~87区为二级非常用汉字区,共有3008个汉字,该区的汉字按部首排序。

④88~94区为用户自定义汉字区。

汉字区位码和国标码的关系为:区位码(十进制)的两个字节分别转换为十六进制后加20H得到对应的国标码,国标码=区位码的十六进制表示+2020H。例如,汉字“学”位于49区08位,区位码为4908,转换为国标码的过程为:将区位号4908转换为十六进制表示为3108H,3108H+2020H=5128H,得到国标码5128H。

(3)汉字的机内码 汉字的机内码是供计算机系统内部进行汉字存储、加工处理、传输统一使用的二进制代码,又称为汉字内部码或汉字内码,简称内码。正是由于内码的存在,输入汉字时可以使用不同的编码,输入计算机后再统一转换成内码,不同的系统使用的汉字内码有可能不同。目前使用最广泛的为两个字节的机内码,是将国标GB2312-80交换码的两个字节的最高位由0变为1而得到的,俗称变形的国标码。这种格式的机内码的最大优点是表示简单,且与交换码之间有明显的对应关系,同时也解决了中西文机内码存在二义性的问题。内码转换格式为:机内码=国标码+8080H。例如,“中”的国标码为十六进制5650,其对应的机内码为十六进制D6D0;“国”字的国标码为397A,其对应的机内码为B9FA。

(4)汉字的字形码 汉字的字形码是汉字字库中存储的汉字字形的数字化信息,用于汉字的显示和打印时产生字形。目前,汉字字形码一般是点阵式字形码(图1-9)和矢量式字形码两种。

图1-9 点阵字形

字形码是汉字的输出码,输出汉字时都采用图形方式,无论汉字的笔画多少,每个汉字都可以写在同样大小的方块中。汉字字形点阵有16×16点阵、24×24点阵、48×48点阵。一个汉字方块中行数、列数分得越多,描绘的汉字也就越精细,但占用的存储空间也就越大。例如,16×16点阵的含义为:用256(16×16=256)个点来表示每个汉字的字形信息。每个点有黑白两种状态,分别用二进制数的1和0来表示,点阵中所有黑点组成了汉字字形。16×16点阵的字形码需要用32个字节(16×16÷8=32)表示;24×24点阵的字形码需要用72个字节(24×24÷8=72)表示。

汉字字形的矢量编码是将汉字视为由笔画组成的图形。把汉字字形分布在精密点阵上,如256×256点阵,抽取这个汉字每个笔画的特征作为标值,组合起来得到这个汉字字形的矢量信息。由于每个汉字的轮廓特征差异很大,所以每个汉字字形在矢量字库中所占的长度也不尽相同,从矢量汉字字库读取汉字字形信息要比点阵字库更复杂。

汉字字库是汉字字形数字化后,以二进制文件形式存储在存储器中而形成的汉字字模库。汉字字模库亦称汉字字形库,简称汉字字库。

3.Unicode Unicode(universal multiple-octet coded character set,统一码)是由硬件及软件的多家主导厂商共同研制开发的,可以容纳全世界所有语言文字的字符编码方案。Unicode将世界上使用的所有字符都列出来,并给每一个字符一个唯一特定数值,统一地表示世界上的主要文字。目前,Unicode最多可以支持上百万个字符的编码,足以表示用中文、日文等语言书写的文档资料。 zYY4bCnaQjvhSMVQ0qFrpd4RgIS2HZp555UcceQOFAlX5jdyDm1MP7VOlZflxJX8

点击中间区域
呼出菜单
上一章
目录
下一章
×