background image

程序实现汉字内码与 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) 汉字机内码(内码)(汉字存储码)
  汉字机内码(内码)(汉字存储码)的作用是统一了各种不同的汉字输入码在计算机内部

 

的表示。 为了将汉字的各种输入码在计算机内部统一起来,就有了专用于计算机内部存