GB2312、BIG5、GBK、GB18030简介

GB2312、GBK、GB18030、BIG5这些是ANSI范畴下汉字的编码实现,接下来一一介绍。

GB2312

  • 简介:

    GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。

  • 分区表示:

    GB 2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码,如下( 举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是1601,即16区第1个):

    • 01-09区为特殊符号。
    • 16-55区为一级汉字,按拼音排序。
    • 56-87区为二级汉字,按部首/笔画排序。
    • 10-15区及88-94区则未有编码。
  • 存储实现:

    通常采用EUC(Extended Unix Code)储存方法,以便兼容于ASCII。浏览器编码表上的“GB2312”,通常都是指“EUC-CN”表示法。每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”(也称“区字节)”,第二个字节称为“低位字节”(也称“位字节”)。“高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上 0xA0)。 由于一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是 72*94=6768。其中有5个空位是D7FA-D7FE。例如“啊”字在大多数程序中,会以两个字节,0xB0(第一个字节) 0xA1(第二个字节)储存。区位码=区字节+位字节(与区位码对比:0xB0=0xA0+16,0xA1=0xA0+1)。注:因为都加了0xA0(字节最高位必为1),所以可以据此判断是ASCII字符(一个字节表示),还是汉字(两字节表示)

  • 测试

#include <iostream>
using namespace std;

int main()
{
    char szAnsi[] = "啊";
    for( int i = 0; i < sizeof(szAnsi); ++i )
    {
        cout << std::hex << (int)(unsigned char)(szAnsi[i]) << endl;
    }
    return 0;
}

输出结果(啊的编码正好是0XB0A1):

b0
a1
0

当然也可以通过记事本写入一个啊字,然后保存为ANSI格式,再使用Binary Viewer查看二进制数据,也可得出0xB0A1的结果。

GBK

  • 简介:
    GBK编码,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK 向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准,是前者向后者过渡过程中的一个承上启下的产物。ISO 10646 是国际标准化组织 ISO 公布的一个编码标准,即 Universal Multilpe-Octet Coded Character Set(简称UCS),大陆译为《通用多八位编码字符集》,台湾译为《广用多八位元编码字元集》,它与 Unicode 组织的 Unicode 编码完全兼容。ISO 10646.1 是该标准的第一部分《体系结构与基本多文种平面》。我国 1993 年以 GB 13000.1 国家标准的形式予以认可(即 GB 13000.1 等同于 ISO 10646.1)

GB1830

  • 简介
    2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。GB18030 是最新的汉字编码字符集国家标准, 向下兼容 GBK 和 GB2312 标准。

BIG5

  • 简介
    Big5,又称为大五码或五大码,是使用繁体中文(正体中文)社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。

总结

以上是对汉字几种编码的的简要陈列说明,发展历史线路可总结为:
  • GB2312表示简体中文,基本上能满足计算机对简体中文的处理需求,BIG5是表示繁体中文的编码。
  • 在GB2312的基础上加入了繁体中文等一些其它的罕见字符,就出现了GBK。
  • 在GBK的基础上加入少数民族的字符及其它一些字符,就出现了GB18030。

引用参考:

猜你喜欢

转载自blog.csdn.net/s634772208/article/details/80964425