GBK

来自GSXAB的知识库
GBK
术语名称 GBK
英语名称 GBK
别名 GBK1.0

GBK[1]中国全国信息技术标准化技术委员会制定的技术规范指导性文件,是官方字符集字符编码之一。该扩展定义并成形于 1993 年。这一编码向后兼容 GB 2312 ,同时对同年发布的 Unicode 1.1 标准(国内以 GB 13000.1-93 的形式接受这一标准)中的全部中日韩汉字进行支持。一般称之为 GBK 。由于该文件中 GBK 版本号为 1.0 ,这个字符集与字符编码也称为 GBK 1.0 。

对应的标准名为《汉字内码扩展规范》,制定于 1995 年。这一版增加了 95 个没有出现在 GB 2312 和 GB 13000.1-93 中的汉字,并确定了其在私用区(private use area, PUA)的码位,这一版也称为 GBK-1995 。

需要注意,由于 GBK 不是标准而是指导规范,实际使用 GBK 的场景也会被标注为 GB 2312 。

在 GB 2312 内码范围为双字节 0xA0-FF 的基础上, GBK 将编码范围扩展至 0x8140-FEFE (除去低字节为 0x7F 的)。由于 GBK 直接指定了双字节编码位置,一般不考虑对 GBK 字符集使用其他字符编码方案。

字符集特征

收录了 GB 2312 及 GB 13000.1 中的汉字和非汉字符号,字符集中一共有 21886 个字符,其中含汉字 21003 个,符号 883 个[2]

码位特征

与之前的 GB 2312 不同,这一字符集中的码位直接使用内码标记,且不再空出 0x80-0x9F ,而是允许所有高字节在 0x80-FE ,低字节在 0x40-FE (排除 0x7F)的范围。其中存在空位。

具体分配如下:

  • 汉字区:
    • GB 2312 汉字区, GBK/2 区,包含 GB 2312 一二级汉字 6763 个,按原来的机内码占据 0xB0A1-F7FE 。
    • GB 13000.1 扩充汉字区:
      • GBK/3 区,包含 GB 13000.1 汉字 6080 个,占据 0x8140-A0FE (不含 0x??7F)。
      • GBK/4 区,包含 CJK 汉字和增补汉字 8160 个,占据 0xAA40-FEA0 (不含 0x??7F)。
  • 图形符号区:
    • GB 2312 非汉字符号区, GBK/1 区,包含 GB 2312 特殊符号,并补充了来自 GB 12345 的符号,共计 717 个,按原来范围占据 0xA1A1-A9FE 。
    • GB 13000.1 扩充非汉字区, GBK/5 区,包含 GB 13000.1 扩充非汉字区 166 个,占据 0xA840-A9A0 (不含 0x??7F)。
  • 用户自定义区:
    • 0xAAA1-AFFE ,共计 564 个。
    • 0xF8A1-FEFE ,共计 658 个。
    • 0xA140-A7A0 ,共计 672 个。这一区标记为限制使用,因为不排除在此增补字符。

常见编码

GBK 编码

GBK 的字符编码通常直接使用上述双字节码位作为字符编码。这一编码就称为 GBK 。

微软代码页 936

见词条 微软代码页 936

使用

GBK 机内码是 微软代码页 936 的基础,在中国大陆随着 Windows 系统被广泛使用,几乎全部汉字处理、通信等该场景都能看到这一字符编码。 GBK 诞生于 1995 年,其前任且完全兼容的 GB 2312 诞生于 1980 年,而其继任者 GB 18030 诞生于 2000 年。因此有一些过渡到了 GBK ,也有一些直接过渡到了 GB 18030 。但是由于 GB 18030 不再是双字节编码,限制双字节的场景(如 windows 通过 DBCS 能力支持)中 GBK 与 GB 18030 都被广泛使用。只是由于 GBK 不是一个标准号,不少场景往往继续以 GB 2312 的名字使用 GBK ,所以这一字符集尽管被广泛使用,名称上却很少出现。

趋势上, GBK 的场景会被 GB18030 和 UTF-8 取代,但是这两个对于非 ASCII 部分都是变长编码,只有在无法支持更长字节数字符的场景可能仍然停留在 GBK 编码上。


常见字符集字符编码
原始编码 电报码( Morse 电码 BCD 码IBM 卡编码 -
早期二进制码位分配的编码 - BCDICEBCDIC ASCIIISO 646-US 、 ISO 646-IRV)
地区字符编码 - - ISO 8859 : ISO 8859-1 、 ISO 8859-2 、……
- - EUC 类编码,含第一个国标字符集 GB 2312
其编码 EUC-CNIBM 代码页 936)也称 GB 2312
多地区字符编码通过切换串兼容 - - 通用框架: ISO 4873ISO 2022 ,含 ISO-2022-CN
ISO-2022-CN 的简化: HZ 编码
无需切换串的自同步编码 - UTF-EDCBIC 字符集 Unicode / ISO 10646 ,有常见编码 UTF-8UTF-16UTF-32 及废弃编码 UTF-1UTF-7
地区字符编码扩充 - - 国标系列后续:GBK微软代码页 936)、 GB 18030微软代码页 54936