1、 编码介绍
字符编码就是以二进制的数字来对应字符集的字符,目前用得最 普遍的字符集是 ANSI,对应 ANSI 字符集的二进制编码就称为 ANSI 码,
DOS 和 Windows 系统都使用了 ANSI 码,但在系统中使用的字 符编码要经过二进制转换,称为系统内码。
汉字内码:ANSI 码是单一字节(8 位二进制数) 的编码集,最多只能表示 256 个字符,不能表示众多的汉字字符,
各个国家和地区 在 ANSI 码的基础上又设计了各种不同的汉字编码集,以能够处理大 数量的汉字字符。
这些编码使用单字节来表示 ANSI 的英文字符 (即 兼容 ANSI 码),使用双字节来表示汉字字符。 由于一个系统中只能 有一种汉字内码,
不能识别其它汉字内码的字符,造成了交流的不便。在微软的主页对部分的编码有比较详细的列表。
2、GB2312
GB2312 码是中华人民共和国国家汉字信息交换用编码,全称《信 息交换用汉字编码字符集--基本集》,由国家标准总局发布,1981 年 5 月 1 日实施,通行于大陆。
新加坡等地也使用此编码。
GB2312 收录简化汉字及符号、字母、日文假名等共 7445 个图形字符,其中汉字占 6763 个。
GB2312 规定<对任意一个图形字符都采 用两个字节表示, 每个字节均采用七位编码表示> ,习惯上称第一个 字节为<高字节> ,第二个字节为<低字节> 。
GB2312-80 包含了大部 分常用的一、二级汉字, 和 9 区的符号。该字符集是几乎所有的中文 系统和国际化的软件都支持的中文字符集,这也是最基本的中文字符 集。
其编码范围是高位0xa1-0xfe,低位也是0xa1-0xfe;汉字从0xb0a1开始,结束于 0xf7fe。
GB2312 将代码表分为 94 个区,对应第一字节(0xa1-0xfe);每 个区 94 个位 (0xa1-0xfe),对应第二字节,两个字节的值分别为区号 值和位号值加 32 (2OH),
因此也称为区位码。 01-09 区为符号、数 字区,16-87 区为汉字区(0xb0-0xf7),10- 15 区、88-94 区是有待进 一步标准化的空白区。
GB2312 将收录的汉字分成两级: 第一级是常 用汉字计 3755 个,置于 16-55 区,按汉语拼音字母/笔形顺序排列; 第二级汉字是次常用汉字计 3008 个,
置于 56-87 区,按部首/笔画顺 序排列。 故而 GB2312 最多能表示 6763 个汉字。
3、GBK
GBK 对 GB2312 进行了扩展。第一字节为 0x81~0xFE,第二字 节分两部分,一是 0x40~0x7E,二是 0x80~0xFE 。其中和 GB2312 相 同的区域,字完全相同。
扩展部分大概是按部件(部首)和笔顺(笔画) 从 GB13000 中取出再排列入 GBK 中。
在我的点阵字库中定位方法如下。第一个字节减去 0x81 ,则是 正确 的 区位 ,每个区 的大小要根据每个字所 占用的字节 × 190(0x7f-0x40+0xff-0x80)即可。
如果第二个字节小于 0x7f 则减去 0x40, 如果第二个字节大于等于 0x80 则减去 0x41。
4、BIG5
如不去考虑特殊符号,及后来的七个扩充字, TW-BIG5 的排序 方式如下。
将所有的字分成两大群:常用字区与次常用字区,每一个 字区分别用笔画来排序,同一个笔画的字,依部首来排。
TW-BIG5 每 个字由两个字节组成, 其第一字节编码范围为 0xA1~0xF9,第二字节 编码范围为 0x40~0x7E 与 0xA1~0xFE ,
总计收入 13868 个字 (包括 5401 个常用字、 7652 个次常用字、 7 个扩充字、以及 808 个各式符 号)。
BIG5 码把代码表分为 89 个区,对应第一字节(0xa1-0xf9);每 个区 157 个位 (0x40-0x7e,0xa1-0xfe);总计收入 13868 个字 (包括符 号)。
在我的点阵字库中定位方法如下。第一个字节减去 0xa1 ,则是 正确 的 区位 ,每个区 的大小要根据每个字所 占用的字节 × 157 (0x7f-0x40+0xff-0xa1)即可。
如果第二个字节小于 0x7f 则减去 0x40, 如果第二个字节大于等于 0xa1 则减去 0x62。
5、UNICODE
Unicode 码 :国际 标准组织 于 1984 年 4 月 成立 ISO/IEC JTC1/SC2/WG2 工作组,针对各国文字、 符号进行统一性编码。
1991 年美国跨国公司成立 Unicode Consortium,并于 1991 年 10 月与 WG2 达成协议,采用同一编码字集。
目前 Unicode 是采用 16 位编码体系,其字符集内容与 ISO10646 的 BMP (Basic Multilingual Plane ) 相同。
Unicode 于 1992 年 6 月通过 DIS (Draf International Standard), 目前 版本 V2.0 于 1996 公布,内容包含符号 6811 个,汉字 20902 个,
韩 文拼音 11172 个,造字区 6400 个,保留 20249 个,共计 65534 个。
6、HANGUL
HANGUL 码:HANGUL 码是韩国文字常用的一种编码, 他的编 码 规 则 与我 们现 行 的 GBK 编码 规 则 是 一样 的,第 一 字 节 为 0x81~0xFE,
第二字节分两部分,一是 0x40~0x7E,二是 0x80~0xFE。其编程方式也跟我国的GBK 方式相同。
7、Shift-JIS(即 SJIS)
Shift-JIS 码:这个编码是在 Windows 系统中比较常用的一个日文 编码。 他也是由两个字节组成 。
第 一个字节 是从 0x81-0x84 , 0x87-0x9F,0xE0-0xEA,0xED-0xEE ,0xFA-0xFC ,第二个字节是从 0x40-0xFC 。
由于第一个字节的区比较混乱,且 0xFA-0xFC 区用的比 较少所 以本软件将 原来 的第一个字节范围 改为了 0x81-0x9F , 0xE0-0xEE,以便于大家编程。
在我的点阵字库中定位方法如下。第一个字节如果小于 0xA0 则 减去 0x81,如果是大于等于 0xE0 小于 0xEF 则减去 0xCE,这个就可 以得到正确的区码,
每个区的大小要根据每个字所占用的字节×189 (0xFD-0x40) 即可。 如果第二个字节小于 0xFC 则减去 0x40。这个 SJIS 的定位就完成了。
8、UHC
UHC 码:其实 UHC 可能并不是叫做 UHC,这个编码是在以为 韩国用户的要求下增加的, 他具体叫这个做什么编码我也不是很清 楚。
只知道,这个编码跟我国的GB2312 编码是完全一样的。 只是他 用到的字相对较多一点, 我国的预留空间相对来说少一点。
其编程的 方法跟我们的GB2312 编码是完全一样的。