-
1 文本阅读
-
2 视频讲解
-
3 视频讲解
字符编码的表示
1.西文字符的编码
前面所述是数值数据的编码,而计算机处理的另一大类数据是字符,各种字母和符号也必须用二进制数编码后才能交给计算机处理。目前,国际上通用的西文字符编码是ASCⅡ码(American standard code for information interchange,美国国家标准信息交换代码)。ASCⅡ码有两个版本,即标准ASCII码和扩展的ASCIⅡ码。
标准ASCIⅡ码是7位码,即用7位二进制数来编码,用1字节存储或表示,其最高位总是0,7位二进制数总共可编出27=128个码,表示128个字符,如表2.1所示。前面32个码及最后1个码分别代表不可显示或打印的控制字符,它们为计算机系统专用。数字字符O~9的ASCII码是连续的,其ASCⅡ码分别是48~57:英文大写字母A~Z和英文小写字母a~z的ASCⅡ码分别也是连续的,分别是65~90和97~122。依据这个规律,当知道一个字母或数字的ASCII码后,很容易推算出其他字母和数字的ASCII码。
十进制 | 字符 | 十进制 | 字符 | 十进制 | 字符 | 十进制 | 字符 |
0 | NUL | 32 | SP | 64 | @ | 96 | ` |
1 | SOH | 33 | ! | 65 | A | 97 | a |
2 | STX | 34 | “ | 66 | B | 98 | b |
3 | ETX | 35 | # | 67 | C | 99 | c |
4 | EOT | 36 | $ | 68 | D | 100 | d |
5 | ENQ | 37 | % | 69 | E | 101 | e |
6 | ACK | 38 | & | 70 | F | 102 | f |
7 | BEL | 39 | ‘ | 71 | G | 103 | g |
8 | BS | 40 | ( | 72 | H | 104 | h |
9 | HT | 41 | ) | 73 | I | 105 | i |
10 | LF | 42 | * | 74 | J | 106 | j |
11 | VT | 43 | + | 75 | K | 107 | k |
12 | FF | 44 | , | 76 | L | 108 | l |
13 | CR | 45 | - | 77 | M | 109 | m |
14 | SO | 46 | . | 78 | N | 110 | n |
15 | SI | 47 | / | 79 | O | 111 | o |
16 | DEL | 48 | 0 | 80 | P | 112 | p |
17 | DC1 | 49 | 1 | 81 | Q | 113 | q |
18 | DC2 | 50 | 2 | 82 | R | 114 | r |
19 | DC3 | 51 | 3 | 83 | S | 115 | s |
20 | DC4 | 52 | 4 | 84 | T | 116 | t |
21 | MAK | 53 | 5 | 85 | U | 117 | u |
22 | SYN | 54 | 6 | 86 | V | 118 | v |
23 | ETB | 55 | 7 | 87 | W | 119 | w |
24 | CAN | 56 | 8 | 88 | X | 120 | x |
25 | EM | 57 | 9 | 89 | Y | 121 | y |
26 | SUB | 58 | : | 90 | Z | 122 | z |
27 | ESC | 59 | ; | 91 | [ | 123 | { |
28 | FS | 60 | < | 92 | \ | 124 | | |
29 | GS | 61 | = | 93 | ] | 125 | } |
30 | RS | 62 | > | 94 | ^ | 126 | ~ |
31 | VS | 63 | ? | 95 | _ | 127 | Del |
扩展的ASCII码是8位码,即用8位二进制数来编码,用1字节存储表示。8位二进制数总共可编出28=256个码,它的前128个码与标准的ASCⅡ码相同,后128个码表示一些花纹图案符号。
对于西文字符还存在另外一种编码方案,这就是EBCDIC码(extended binary coded decimal interchange code,广义二进制编码的十进制交换码),它主要用于IBM系列大型主机,而ASCIⅡ码普遍用于微型机和小型机。
2.汉字的编码
中国的汉字源远流长,使用汉字的国家和地区很多。计算机在处理汉字信息时也要将其转换成二进制代码,因此也需要对汉字进行编码。汉字与西文字符比较起来,数量庞大,字形复杂,同音字多,还有简体、繁体之分,因此汉字编码就不能像字符编码一样,在计算机系统中的输入、内部处理、存储和输出过程中都使用同一种代码。
为了在计算机系统的各个环节中方便、确切地表示汉字,需要对汉字进行多种编码,如汉字输入码、国标码、汉字机内码、汉字字形码、汉字地址码等。计算机的汉字信息处理系统在处理汉字时,不同环节使用不同的编码,并根据不同的处理层次和不同的处理要求进行代码转换。
(1)汉字输入码
这是一种用计算机标准键盘上按键的不同排列组合来对汉字的输入进行编码。目前汉字输入编码法的研究和发展迅速,已有几百种汉字输入码。衡量一个输入编码法的好坏有以下要求:编码短,可以减少击键的次数;重码少,可以实现盲打;好学好记,便于学习和掌握。
但现在还没有一种全部符合上述要求的汉字输入编码方法。目前,常用的输入法大致分为以下两类。
1)音码。音码主要是以汉语拼音为基础的编码方案,如全拼、双拼、自然码和智能ABC等。这种输入法的优点是简单易学,几乎不需要专门训练就可以掌握;其缺点是输入重码率很高。因此,按字音输入后还必须进行同音字选择,影响输入速度,而对于不认识的字则无法输入。智能ABC、紫光拼音及搜狗拼音等输入法以词组为输入单位,很好地弥补了重码、输入速度慢等音码的缺陷。
2)形码。形码主要是根据汉字的特点,按汉字固有的形状,把汉字拆分成部首,然后进行组合,如五笔字型输入法。这种输入法的优点是输入速度快、见字识码、对不认识的字也能输入;其缺点是比较难掌握,需专门学习,无法输入不会写的字。五笔字型输入法应用广泛,适合专业录入员,基本可实现盲打,但必须记住字根,学会拆字和形成编码。
为了提高输入速度,输入方法走向智能化是目前研究的内容。未来的智能化方向是基于模式识别的语音识别输入、手写输入或扫描输入。汉字语音输入法是操作者只要对着计算机口述,计算机就记录下来,而且还可以根据不同人的口音特点自动识别。office中已提供了语音识别输入、联机手写输入的功能,虽然识别率还有待提高,但这体现了计算机人性化发展的趋势。
(2)国标码
为了适应汉字信息交换的需要,1981年国家颁布了国家标准GB2312-1980《信息交换用汉字编码字符集基本集》,简称国标码,共收入汉字和图形符号7445个。其中,包括一般符号202个:序号60个,数字字符22个;英文字母52个,日文假名169个,希腊字母48个,俄文字母66个;汉语拼音26个,汉语注音字母37个;一级汉字3755个,按拼音字母顺序排列;二级汉字3008个,按部首顺序排列,与新华字典部首顺序相同。
国标码的每个汉字用2字节表示,英文字母、数字及其他标点符号也是2字节码,这些符号在显示和打印时所占宽度是ASC字符的2倍。在显示和打印过程中,通常将这种双字节字符称为“全角字符”,将ASCⅡ码中的单字节字符称为“半角字符”。为了编码,将汉字分成若千区,每个区中94个汉字,由区号和位号(区中的位置)构成区位码。例如,“中”位于第54区48位,区位码为5448。区号和位号各加32就构成了国标码,这是为了与ASCⅡ码兼容,每个字节值大于32(0~32为非图形字符码值)。所以,“中”的国标码为8680。
为了兼容汉字总量(估计汉字总数达6万多个)和兼顾使用汉字的国家和地区,我国于1995年12月公布了又一个新的汉字字符集CJK(Chinese-Japanese-Korean),共收集了20902个汉字,每个字符用4字节表示。
(3)汉字机内码
汉字机内码是供计算机系统内部进行汉字存储、加工处理和传输统一使用的二进制代码,简称内码。使用不同的输入码输入的汉字进入计算机系统后,统一转换成机内码存储。一个国标码占2字节,每字节的最高位仍为0;英文字符的机内代码是7位ASCII码,最高位也为0。为了在计算机内部能够区分是汉字编码还是ASCIⅡ码,将国标码每字节的最高位由0变为1,变换后的国标码就是汉字机内码。由此可知,汉字机内码的每字节都大于128,而每个西文字符的ASCIⅡ码值均小于128。
例如:
汉字 | 汉字国标码 | 汉字机内码 |
中 | 8680(0101011001010000)B | (1101011011010000)2=(D6D0)16 |
华 | 5942(00111011 00101010)B | (1011101110101010)2=(BBAA)16 |
即 机构码=国际码+(8080)16
要查看汉字的机内码,可以利用“记事本”输入中文文字,接着保存文件,然后再切 机内码=国标码+(8080)16换到DOS模式,使用Debug程序的“D(dump)”命令来查看。
(4)汉字字形码
汉字字形码又称为汉字字模,用于汉字在显示屏或打印机输出。汉字字形码通常有两种表示方式:点阵和矢量。
1)点阵。点阵式字形码就是以点阵方式表示汉字。汉字是方块字,将方块等分成n行n列的格子,简称为点阵。凡笔画所到的格子点为黑点,用二进制数“1”表 否则,为白点,用二进制数“0”表示。这样,一个汉字的字形就可用一串二进制数表示了。下图显示了“大”字的16×16字形点阵及代码。
根据输出字符的要求不同,字符点的多少也不同。简易型汉字为16×16点阵,提高型汉字为24×24、32×32、48×48点阵等。点阵越大、点数越多,分辨率就越高,输出的字形就越清晰美观,所占存储空间也越大。例如,16×16汉字点阵有256个点,需要256位二进制位来表示一个汉字的字形码。8个二进制位组成1字节,由此可见,一个16×16点阵的字形码需要32B存储空间,两级汉字大约占用256KB。因此,字模点阵只能用来构成“字库”,而不能用于机内存储。字库中存储了每个汉字的点阵代码,当显示输出时才检索字库,输出字模点阵得到字形。不同字体的汉字需要不同字体的字库,如宋体字库、楷体字库、黑体字库和繁体字字库等。
2)矢量。汉字的矢量表示方式存储的是描述汉字字形的轮廓特征,当要输出汉字时,通过计算机的计算,由汉字字形描述生成所需大小和形状的汉字点阵。矢量化字形描述与最终文字显示的大小、分辨率无关,因此可产生高质量的汉字输出。Windows 中使用的TrueType技术就是汉字的矢量表示方式。
点阵和矢量方式的区别:前者编码和存储方式简单,无须转换直接输出,但字形放大后产生的效果差;矢量方式的特点正好与前者相反。
(5)汉字地址码
汉字地址码是指汉字字形码在汉字字库中存放位置的代码,即字形信息的地址。需要向输出设备输出汉字时,必须通过地址码才能在汉字字库中取到所需的字形码,最终在输出设备上形成可见的汉字字形。在汉字字库中,字形信息都是按一定顺序(大多数按国标码中汉字的排列顺序)连续存放的,所以汉字地址码也大多是连续有序的,而且与汉字内码有着简单的对应关系,以简化汉字内码到汉字地址码的转换。
(6)各种汉字代码之间的关系
计算机对汉字信息的处理过程,实际上是汉字的各种编码之间的转换过程。下图所示这些代码在汉字信息处理系统中的位置及它们之间的关系。
汉字输入码向机内码的转换,是通过外码与内码的对照表(或称索引表)来实现的。一般系统具有多种输入方法,每种输入方法都有各自的索引表。
在计算机的内部处理过程中,汉字信息的存储和各种必要的加工都是以汉字内码形式进行的。
汉字信息处理过程
在汉字通信过程中,处理器将汉字内码转换为适合通信用的交换码(国标码),以实现通信处理。
在汉字的显示和打印过程中,处理器根据汉字内码计算出汉字地址码,按地址码从字库中取出汉字字形码,实现汉字的显示或打印输出。

