汉字内码扩展规范

历史

1993年，Unicode 1.1版本推出，收录中国大陆、台湾、日本及韩国通用字符集的汉字，总共有20,902个。中国大陆订定了等同于Unicode 1.1版本的“GB 13000.1-93”“信息技术通用多八位编码字符集（UCS）第一部分：体系结构与基本多文种平面”。
由于GB 2312-80只收录6763个汉字，有不少汉字，如部分在GB 2312-80推出以后才简化的汉字（如“啰”），部分人名用字（如中国前总理朱镕基的“镕”字），台湾及香港使用的繁体字，日语及朝鲜语汉字等，并未有收录在内。于是厂商微软利用GB 2312-80未使用的编码空间，收录GB 13000.1-93全部字符制定了GBK编码。
根据微软资料，GBK是对GB2312-80的扩展，也就是CP936字码表（Code Page 936）的扩展（之前CP936和GB 2312-80一模一样），最早实现于Windows 95简体中文版。虽然GBK收录GB 13000.1-93的全部字符，但GBK是一种编码方式并向下兼容GB2312；而GB 13000.1-93等同于Unicode 1.1是一种字符集，它的几种编码方式如UTF8、UTF16LE等，与GBK完全不兼容。

与其他编码的关系

GBK向下完全兼容GB2312-80编码。支持GB2312-80编码不支持的部分中文姓，中文繁体，日文假名，还包括希腊字母以及俄语字母等字母。不过这种编码不支持韩国字，也是其在实际使用中与unicode编码相比欠缺的部分。
上述GBK/1和GBK/2的领域即GB 2312-80用通常方法编码的区域。GB 2312（正确说法是其根据EUC-CN的编码）和ISO/IEC 2022中调用GR其他的94²字符集一样，A1–FE的范围开始读取字节对。这是上图中右下角的部分。但是，GB 2312中对于AA–AF和F8–FE区域是空的，没有赋予编码。于是GBK就在这些领域里进行拓展。二者剩余部分作为用户定义区。
更重要的是，GBK进行了字节范围的扩展。ISO/IEC 2022中GR区域的字数有94²=8,836字的限制。只要放弃ISO/IEC 2022中针对图形文字和控制文字赋予严格的范围的模式，下位字节为单字节文字，上位字节对保留对应字符的功能，潜在的128²=16,384的代码位置就可以使用。GBK采用其中的一部分，第一个字节从A1–FE（每个字节有94个选项）扩展成81–FE（126个选项），第二字节的范围是40–FE（191个选项），总共有24066（126*191）个位置。

与CP936字码表比较

微软在稍新一点的CP936中使用单字节0x80 代表欧元字符（U+20AC），而《规范》之GBK编码不含此字符。