任务内容
·西文字符的编码。
·汉字字符的编码。
·常用汉字字符集。
任务要求
·掌握西文字符的编码。
·了解汉字字符的编码。
·熟悉常用汉字字符集。
1.西文字符的编码
计算机中的信息都是用二进制编码表示的,用来表示字符的二进制编码称为字符编码。计算机中常用的字符编码有EBCDIC码(Extended Binary Coded Decimal Interchange Code),主要是IBM大型计算机采用。微机采用ACSII码(American Standard Code for Information Interchange),即美国标准信息交换码,并被国际标准化组织指定为国际标准,西文字符ASCII码表如表1-4所示。
ASCII码用八位二进制数表示,最高位为0,因此其编码范围是00000000~01111111,即0~127,共有27=128个不同的编码值,一个编码代表一个字符,如01000001表示字符“A”,因此128个编码对应128个字符,这些字符包括26个大写字母,26个小写字母,0~9十个数字,键盘上的“+”、“-”、“*”、“/”等字符,以及34个控制字符,我们统称为字符。每个字符都对应一个ASCII码;反之,在计算机内每个ASCII码也代表一个字符。计算机内用1个字节存放一个ASCII码。
表1-4 西文字符ASCII码表
要确定某个数字、字母、符号或控制符的ASCII码,可以在上表中先查到它的位置,然后确定它所在位置的相应行和列,再根据行确定低4位编码(b3b2b1b0),根据列确定高3位编码(b6b5b4),最后将高3位编码与低4位编码合在一起(b6b5b4b3b2b1b0)就是要查字符的ASCII码。例如,查表得到字母“Y”的ASCII码为1011001。
同样,也可以由ASCII码通过查表得到某个字符。例如,有一字符的ASCII码是1100001,则查表可知,它是小写字母“a”。
需要特别注意的是,十进制数字字符的ASCII码与它们的二进制数值是不同的。例如,十进制数9的七位二进制数是(0001001),而十进制数字字符“9”的ASCII码为0111001,0111001B=39H=57D。由此可见,数值9与数字字符“9”在计算机中的表示是不同的。数值9可以表示数的大小,并参与数值运算,而数字字符“9”只是一个符号,不能参与数值运算,它们是不同类型的数据。
2.中文字符的编码
上述西文字符在计算机内使用占有1个字节的ASCII码表示。同样每个汉字都需要进行编码,计算机才能处理它们。计算机处理汉字的过程实际上是汉字输入码、汉字信息交换码、汉字机内码、汉字输出码等编码间的转换过程。下面对这些编码作一些介绍。
计算机识别汉字时要把输入码转换为机内码以便进行处理和存储。我们在显示器里看见的汉字实际上是一种汉字点阵形式,为了将汉字以点阵的形式输出,计算机还要将机内码转换为汉字的字形码,确定汉字的点阵,并且在计算机和其他系统或设备需要信息、数据交换时还必须采用交换码。
(1)汉字输入码
为把汉字输入计算机而编制的代码称为汉字输入码,也称外码。目前,常用的汉字输入方法有全拼输入法、智能ABC输入法和五笔字型输入法等。常用汉字有7000个左右,每个汉字可用不同的输入法由键盘输入,输入方法不同,同一汉字的外码就可能不同,用户可以根据自己的需要选择不同的输入方法。例如,用五笔字型中的外码“vb”可输入汉字“好”,用全拼输入法时“好”对应的外码是“hao”,这种相同汉字的不同外码可通过输入字典统一转换为标准的国标码。
(2)汉字信息交换码
汉字信息交换码是用于汉字信息处理系统之间或者与通信系统之间进行信息交换的汉字代码,简称交换码,也叫国标码。我国于1981年颁布了国家标准《信息交换用汉字编码字符集—基本集》,代号为GB 2312—80,它收录了6763个汉字和682个非汉字图形字符编码共7445个,分为二级汉字。一级常用汉字3755个,按汉字的拼音顺序排列;二级次常用汉字3008个,按部首顺序排列。国标GB 2312—80中的每个图形字符的汉字交换码均用两个字节表示,每个字节为七位二进制码。
GB 2321—80信息交换码表排成一张94×94的图形符号代码表,通常将表中的行号称为区号,列号称为位号,表中任何一个字符的位置可由区号和位号唯一确定,它们各需7个二进制位表示。两者组合而成的汉字编码称为区位码。
例如,“大”字的区号为20,位号为83,区位码是2083,用2个字节表示为0001010001010011,用十六进制可表示为1453H。
但在信息通信中,汉字的区位码与通信使用的控制码(00H~1FH)会发生冲突。为解决冲突,采取每个汉字的区号和位号分别加上32(即00100000B或20H),经过这样处理得到的代码就是汉字的国标码。因此,“大”字的交换码是1453H+2020H=3473H。
因此,可以得到以下公式:
区位码+2020H=国标码(www.xing528.com)
(3)汉字机内码
机内码是在计算机内部对汉字进行存储、处理和传输的编码。现实中,文本中的汉字与西文字符经常是混合在一起使用的,汉字信息如果使用最高位均为0的两个字节的国标码直接存储,则与单字节的标准ASCII码就会发生冲突,所以为解决冲突,采取把一个汉字的国标码的两个字节的最高位都置为1,即将汉字国标码的两个字节分别加上10000000B(或80H),这种高位为1的双字节(16位)汉字编码就称为GB 2312汉字的“机内码”,又称内码。这样由键盘输入汉字时输入的是汉字的外码,而在机器内部存储汉字时用的是内码。
例如,“大”字的内码是3473H+8080H=B4F3H。
从而得到三种编码的转换公式:
国标码+8080H=机内码
区位码+AOAOH=机内码
(4)汉字输出码
汉字输出码又称为汉字字形码,其作用是输出汉字。计算机处理汉字信息需要显示或打印时,汉字机内码不能直接作为每个汉字输出的字形信息,而需要根据汉字内码,在字形库中检索出相应汉字的字形信息后才能由输出设备输出。对汉字字形经过点阵的数字化后的一串二进制数称为汉字输出码。
汉字是方块字,将方块等分成n行n列的格子,称为汉字字形点阵,汉字的字形称为字模。在点阵中笔画所到的格子点为黑点,用二进制数“1”表示;否则为白点,用二进制数“0”表示。这样,一个汉字的字形就可用一串对应的二进制数来表示了。
例如,16×16点阵的汉字需要用16×16/8=32B存储表示,24×24点阵的汉字需要用24×24/8=72B存储表示,32×32点阵的汉字需要用32×32/8=128B存储表示。
常用汉字点阵有16×16、24×24、32×32等,点阵数越大,分辨率越高,字形越美观,但占用的存储空间也越多。汉字字形数字化后,以二进制文件形式存储在存储器中,构成汉字字模库,也称为汉字字形库,简称汉字字库,为满足不同需要,出现了很多不同的字库,如宋体字库、仿宋字库、楷体字库、黑体字库、简体字库和繁体字库等。
汉字的输入、处理和输出过程就是以上各种汉字代码之间的转换过程。输入时,从键盘输入汉字时使用的是汉字输入码;处理时,在计算机内部经过代码转换程序将其转换为机内码,保存在主存储器中;输出时,根据输入码到码表中检索机内码,得到2个字节的机内码或直接根据存储的汉字内码,在主机内由字形检索程序从汉字字形库中查出该汉字的字形码,送显示器或打印机输出,如图1-21所示。
图1-21 汉字代码转换图
3.常用汉字字符集介绍
汉字的特点为数量大、多个国家和地区使用、字形复杂、同音字多、异体字多。而GB 2312—80汉字编码只有6763个汉字,实际使用时汉字不够用。为解决此类问题,相继推出了GBK编码、UCS/Unicode、CJK编码标准、GB 18030汉字编码标准,下面对这三种编码标准作简要介绍。
(1)GBK编码
我国于1995年发布《汉字内码扩展规范》GBK字符集,收集了21003个汉字和883个图形符号,与GB 2312国标汉字字符集及其内码保持兼容,简体和繁体汉字在同一个字符集中。GBK编码采用双字节编码,第1字节的最高位必为“1”,第2字节的最高位不一定是“1”。Windows 95以上简体中文版、Office 95以上简体中文版提供GBK码的检索和排序,许多网站的网页也使用GBK代码。
(2)UCS/Unicode与CJK编码
ISO(国际标准化组织)制定了ISO/IEC 10646标准,即通用多8位编码字符集,简称为UCS。Unicode称为统一码或联合码,由微软、IBM等公司联合制定,是与UCS完全等同的工业标准。UCS/Unicode用可变长代码(4个字节)将全世界现代6800种书面文字所使用的所有字符、符号都集中在一个字符集中进行统一编码。目前的做法是采用双字节编码UCS-2,共有字符49194个,其中包含了拉丁字母文字、音乐文字以及汉字常用字(CJK)等。目前在Windows、UNIX、Linux系统中广泛使用。
CJK统一编码称为中日韩统一汉字编码字符集,将其中的汉字按统一的认同规则进行认同(只要字形相同,就使用一个编码)后,构成UCS/Unicode中的共27484个字符的汉字部分。
(3)GB 18030—2000汉字编码标准
为了与国际标准UCS接轨,方便GB与BIG-5码的转换,并保护已有的大量汉字资源,我国于2000年推出了GB 18030汉字编码标准。它采用单字节、双字节和四字节三种方式对字符编码(码位总数达到160多万个),双字节编码与GB 2312—80和GBK保持向下兼容,四字节编码包括CJK统一编码汉字共27484个字符。
以上几种汉字编码的对比见表1-5。
提示 UCS/Unicode不兼容我国的GB2312、GBK编码汉字编码。中国香港、台湾地区使用繁体汉字的BIG-5码。
表1-5 汉字编码对比表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。