常用字符集编码详解: ASCII 、GB2312、
GBK、GB18030、unicode 、UTF-8
ASCII
ASCII 码是 7 位编码,编码范围是 0x00-0x7F。ASCII 字符集包括英文字母、
阿拉伯数字和标点符号等字符。其中 0x00-0x20 和 0x7F共 33 个控制字符。
只支持 ASCII 码的系统会忽略每个字节的最高位,只认为低 7 位是有效位。
HZ字符编码就是早期为了在只支持 7 位 ASCII 系统中传输中文而设计的编码。
早期很多邮件系统也只支持 ASCII 编码,为了传输中文邮件必须使用 BASE64或
者其他编码方式。
GB2312
GB2312 是基于区位码设计的,区位码把编码表分为 94 个区,每个区对应 94
个位,每个字符的区号和位号组合起来就是该汉字的区位码。区位码一般 用 10
进制数来表示, 如 1601 就表示 16 区 1 位,对应的字符是“啊”。 在区位码的区
号和位号上分别加上 0xA0 就得到了 GB2312编码。
区 位码中 01-09 区是符号、数字区, 16-87 区是汉字区, 10-15 和 88-94 是未定义的空
白区。它将收录的汉字分成两级:第一级是常用汉字计 3755 个,置于 16-55 区,按汉语拼音
字母 / 笔形顺序排列;第二级汉字是次常用汉字计 3008 个,置于 56-87 区,按部首 / 笔画顺序
排列。一级汉字 是按照拼音排序的,这个就可以得到某个拼音在一级汉字区位中的范围,很多
根据汉字可以得到拼音的程序就是根据这个原理编写的。
GB2312 字符集中除常用简体汉字字符外还包括希腊字母、日文平假名及片假名字母、俄语
西里尔字母等字符, 未收录繁体中文汉字和一些生僻字。 可以用繁体汉字测试某些系统是不是只
支持 GB2312 编码。
GB2312 的编码范围是 0xA1A1-0x7E7E ,去掉未定义的区域之后可以理解为实际编码范围
是 0xA1A1-0xF7FE 。
EUC-CN 可以理解为 GB2312 的别名,和 GB2312 完全相同。
区位码 更应该认为是字符集的定义, 定义了所收录的字符和字符位置, 而 GB2312 及 EUC-CN
是实际计算机环境中支持这种字符集的编码。 HZ 和 ISO-2022-CN 是对应区位码字符集的另外
两种编码,都是用 7 位编码空间来支持汉字。区位码和 GB2312 编码的关系有点像 Unicode
和 UTF-8 。
GBK
GBK 编码是 GB2312 编码的超集,向下完全兼容 GB2312 ,同时 GBK 收录了 Unicode 基
本多文种平面中的所有 CJK 汉字。同 GB2312 一样, GBK 也支持希腊字母、日文假名字母、