C 程序实现汉字内码与 GB 码
参考文献:
汉字的编码和表示
1)汉字交换码(国标码) 汉字交换码(国标码)主要用于汉字信息交换。
国标码:以国家标准局 1980 年颁布的《信息交换用汉字编码字符集"基本集》(代号
为 GB2312 80)
规定的汉字交换码作为国家标准汉字编码。GB2312 80 中共有 7445 个
字符符号: 汉字符号 6763
个 一级汉字 3755 个(按汉语拼音字母顺序排列) 二级汉字
3008 个(按部首笔划顺序排列) 非汉字符号 682
个 GB2312 80 规定,所有的国标码汉
字及符号组成一个 94 94 的方阵。在此方阵中,每一行称为一个"区",每一列称为一
个"位"。这个方阵实际上组成一个有 94 个区(编号由 01 到 94),每个区有 94 个位(编号
由 01 到 94)
的汉字字符集。 一个汉字所在的区号和位号的组合就构成了该汉字的"区位
码"。其中,高两位为区号,低两位为位号。这样区位码可以唯一地确定某一汉字或字符;
反之,任何一个汉字或符号都对应一个唯一的区位码,没有重码。
区位码分布情况如下:
区 号 内 容 1
区 键盘上没有的各种符号 2
区 各种序号 3
区 键盘上的各种符号(按
中文方式给出) 4 -5
区 日文字母 6
区 希腊字母 7
区 俄文字母 8
区 标识拼音声调的母音
及拼音字母名称 9
区 制表符号 10- 15
区 未用 16-55
区 一级汉字(按拼音字母顺序排
列) 56- 87
区 二级汉字(按部首笔划顺序排列) 88- 94
区 自定义汉字
由上可以看出,所有汉字与符号的 94 个区,可以分为四个组:
① 1 -15 区:为图形符号区。其中 1 9 区为标准符号区;10 15 区为自定义符号区。
② 16 -55 区:为一级汉字区,包含 3755 个汉字。这些区中的汉字按汉语拼音顺序
排序,同音字按笔画顺序列出。
③ 56 -87 区:为二级汉字区,包含 3008 个汉字。这些区中的汉字是按部首笔划顺
序排序的。
④ 88 -94 区:为自定义汉字区。
国标码规定,每个汉字(包括非汉字的一些符号)由 2 字节代码表示。每个字节的最高
位为 0,只使用低 7 位,而低 7 位的编码中又有 34 个适用于控制用的,这样每个字节只
有 27 - 34 = 94 个编码用于汉字。2 个字节就有 94 94=8836 个汉字编码。在表示一个
汉字的 2 个字节中,高字节对应编码表中的行号,称为区号;低字节对应编码表中的列号,
称为位号。
汉 字 国 标 码 的 范 围 用 二 进 制 表 示 是 : 00100001 00100001 01111110
01111110 (1+32)10 (1+32)10 (94+32)10 (94+32)10 7 位 ASCII 码是 128 个字
符组成的字符集。其中编码值 0 31(00000000 00011111)不对应任何印刷字符,通常
称为控制符,用于计算机通信中的通信控制或对计算机设备的功能控制。编码值
32(00100000)是空格字符 SP。编码值 127(1111111)是删除字符 DEL。
汉字国标码的起始二进制位置选择 00100001 即(33)10 是为了跳过 ASCII 码的 32
个控制字符和空格字符。所以,汉字国标码的高位和低位分别比对应的区位码大(32)10
或(00100000)2 或(20)H
,即: 国标码高位 =
区码 + 20H (H 表示十六进制) 国标码
低位 =
位码 + 20H
2) 汉字机内码(内码)(汉字存储码)
汉字机内码(内码)(汉字存储码)的作用是统一了各种不同的汉字输入码在计算机内部
的表示。 为了将汉字的各种输入码在计算机内部统一起来,就有了专用于计算机内部存