作品 4 汉字编码表
4.1 项目简介
字符编码是程序设计中常常遇见的问题,深刻认识字符尤其是汉字的编码规则,对于程序设计中处
理数据的传输与存储是十分重要的。
程序可以使用 seek 命令查找任何一个字符的 GBK,Unicode,UTF8 的编码,执行的命令格式是“seek
字符”,例如:
$seek 我
我 GBK: CED2 Unicode: 6211 UTF-8: E68891
程序还可以使用 list 命令列出任何汉字区位码中任何一个区的所有字符的编码,格式是“list 区号”,
例如:
$list 16
********** 16 区 **********
啊 GBK: B0A1 Unicode: 554A UTF-8: E5958A
阿 GBK: B0A2 Unicode: 963F UTF-8: E998BF
埃 GBK: B0A3 Unicode: 57C3 UTF-8: E59F83
挨 GBK: B0A4 Unicode: 6328 UTF-8: E68CA8
......
4.2 字符编码
1. ASCII 码
我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有
0 和 1 两种状态,因此八个二进制位就可以组合出 256 种状态,这被称为一个字节(byte)。也就是说,一
个字节一共可以用来表示 256 种不同的状态,每一个状态对应一个符号,就是 256 个符号,从 0000000 到
11111111。
上个世纪 60 年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。
这被称为 ASCII 码,一直沿用至今。
ASCII 码一共规定了 128 个字符的编码,比如空格“SPACE”是 32(二进制 00100000),大写的字母
A 是 65(二进制 01000001)。这 128 个符号(包括 32 个不能打印出来的控制符号),只占用了一个字节的
后面 7 位,最前面的 1 位统一规定为 0。
2、非 ASCII 编码
英语用 128 个符号编码就够了,但是用来表示其他语言,128 个符号是不够的。比如,在法语中,字
母上方有注音符号,它就无法用 ASCII 码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编
入新的符号。比如,法语中的é的编码为 130(二进制 10000010)。这样一来,这些欧洲国家使用的编码体
系,可以表示最多 256 个符号。
但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用 256 个符号的编码
方式,代表的字母却不一样。比如,130 在法语编码中代表了é,在希伯来语编码中却代表了字母 Gimel
(ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0—127 表示的符号是一样
的,不一样的只是 128—255 的这一段。
至于亚洲国家的文字,使用的符号就更多了,汉字就多达 10 万左右。一个字节只能表示 256 种符号,
肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是 GB2312,使用两
个字节表示一个汉字,所以理论上最多可以表示 256x256=65536 个符号。