原文:http://www.cnblogs.com/meil/archive/2007/01/31/635871.html51Testing软件测试网$Z[ Nk1E6r

3J `0U_Ux6JW0 GB2312 字符集 (http://www.herongyang.com)51Testing软件测试网 l&G;fc8I

_nN JCJ[3U P%kr0GB2312 是汉字字符集和编码的代号,中文全称为“信息交换用汉字编码字符集”,由中华人民共和国国家标准总局发布,一九八一年五月一日实施。GB 是“国标” 二字的汉语拼音缩写。

1B/a(z.bS0P0 51Testing软件测试网7s$ghN&z\!W4@(E

GB2312 字符集 (character set) 只收录简化字汉字,以及一般常用字母和符号,主要通行于中国大陆地区和新加坡等地。

;e2UI3C8B^a3N-DA0 51Testing软件测试网1Ng;eL2di1l!iU

GB2312 共收录有 7445 个字符,其中简化汉字 6763 个,字母和符号 682 个。 51Testing软件测试网,gc2? Lck|!},^`[

i8g,~ix0GB2312 将所收录的字符分为 94 个区,编号为 01 区至 94 区;每个区收录 94 个字符,编号为 01 位至 94 位。GB2312 的每一个字符都由与其唯一对应的区号和位号所确定。例如:汉字“啊”,编号为 16 区 01 位。

q3w7UnH'x5bt`E0 51Testing软件测试网7eWsJtf f KW&L$Xf

GB2312 字符集的区位分布表:

r.@ J&Au0
  区号    字数    字符类别
01      94    一般符号
02      72    顺序号码
03      94    拉丁字母
04      83    日文假名
05      86    Katakana
06      48    希腊字母
07      66    俄文字母
08      63    汉语拼音符号
09      76    图形符号
10-15            备用区
16-55    3755    一级汉字,以拼音为序
56-87    3008    二级汉字,以笔划为序
88-94            备用区

}:R+T2yr+Z{[n5P0这本手册列出了 GB2312 的全部字符和它们的区位号。

3`]*k't*F9bbc0

GB2312 编码 51Testing软件测试网]}3MFGXF4s5k~B

51Testing软件测试网%w N k%G!N8@'gW G

GB2312 原始编码 (encoding) 是对所收录的每个字符都用两个字节 (byte) 表示。第一字节为“高字节”,由字符的区号值加上 32 而形成;第二字节为“低字节”,由字符的位号值加上 32 而形成。例如:汉字“啊”,编号为 16 区 01 位。它的高字节为 16 + 32 = 48 (0x30),低字节为 01 + 32 = 33 (0x21),合并而成的编码为 0x3021。

M~)W&Y rs'ZB;Gk0 51Testing软件测试网l2{b@%|@ af6g

在区位号值上加 32 的原因大慨是为了避开低值字节区间。

j(W | I3Bq7gX X0 51Testing软件测试网.U*G0|_DZ@u4s-E

由于 GB2312 原始编码与 ASCII 编码的字节有重叠,现在通行的 GB2312 编码是在原始编码的两个字节上各加 128 修改而形成。例如:汉字“啊”,编号为 16 区 01 位。它的原始编码为 0x3021,通行编码为 0xB0A1。 51Testing软件测试网\Xx@Z0[0bpPm8n:_]

~'h"a-{z4_} WR0如果不另加说明,GB2312 常指这种修改过的编码。 51Testing软件测试网3h o*LMiU+sa)L

51Testing软件测试网+Z v]G%Cn

这本手册列出了 GB2312 的全部字符和它们的编码。 51Testing软件测试网7`.B1M+~_Q)`,g

GB2312 与 Unicode 的关系 51Testing软件测试网)F,I5lZ"d@#Zz

]9wQ,z&J\J+kg0GB2312 字符集是 Unicode 字符集的一个子集。这也就是说,GB2312 所收录的每一个字符都收录在 Unicode 之中。

^mxps{ }0 51Testing软件测试网7J?`)m?0@ i

但是 GB2312 编码和 Unicode 编码确没有什么相同之处。同一个汉字,它的 GB2312 编码和 Unicode 编码确毫不相同。例如:汉字“啊”,它的 GB2312 编码为 0xB0A1,但是它的 Unicode 编码为 0x554A。 51Testing软件测试网5r3o;S[:[c%`7n*w

51Testing软件测试网9d?$e(k[T!cJ6qb#{

这本手册为 GB2312 的每一个字符列出了它所对应的 Unicode 编码和 UTF-8 (Unicode Transformation Format - 8-bit) 编码。

tJ`+_X0