IBM 代码页 936

来自GSXAB的知识库
代码页936
术语名称 代码页936
英语名称 code page 936
别名 CCSID 936, IBM-936

IBM 代码页 936 指的是 IBM 代码页中编号为 936 的代码页。不是微软的 Windows 代码页 936 ,后者在 IBM 的编号为 1386 。代码页 936 是对字符集 GB 2312 的一种扩展和字符编码方案。

编码方案

代码页 936 大量参考了 Shift JIS (IBM 代码页 932)的结构,单字节字符集代码页 903 和双字节字符集代码页 928 的合并。单字节部分代码页 903 是类似 ISO 646-JP 的编码, 0x5C \ 被替换为 ¥0xFE ~ 被替换为 (注意,尽管是中文编码,不是 ISO 646-CN ,CN 版本的 ¥0x24 $ 上)[1]

IBM 代码页 936 的汉字部分(或者说 928)格式参考了 ShiftJIS 中的偏移,有时也被形容为 Shift GB 2312 。在 936 中, 汉字使用双字节编码:高字节为 0x80-AC (以及用户定义区的 0xF0-0xFA),低字节为 0x40-7E,0x81-FC 。可以发现,其中低字节的范围为 0x40-FF 中去掉必须表示擦除字符0x7F DEL 后,填入两个 94 的结果。可以将其分为 0x40-7E,0x81-9E 和 0x9F-FC 的各 94 的两段。

在此基础上,可以认为 GB2312 被如下编码[2][3]

  • 01-09 区,特殊符号:首字节为 0x80 开始,到首字节为 0x85 的前半段。
  • 10-15 区,未分配:首字节为 0x85 的后半段,到首字节为 0x88 的前半段。
  • 16-55 区,一级汉字:首字节为 0x88 的后半段,到首字节为 0x9C 的前半段。
  • 56-87 区,二级汉字:首字节为 0x9C 的前半段,到首字节为 0xAC 的前半段。
  • 88-94 区,未分配:理论上,首字节为 0xAC 的后半段,到首字节为 0xAE 结束。(实际上 0xAD-0xAF 没有明确信息,算是默认未分配)

此外, 0xF0-F9 用作用户定义字符, 0xFA 留作用户定义非汉字字符。


常见字符编码
早期编码 电报码、 BCD 码BCDICEBCDIC)、ASCIIISO 646
ISO 8859 ISO 8859-1 、 ISO 8859-2 、……
国标系列 IBM 代码页 936 / GB 2312IBM 代码页 1386 / GBKIBM 代码页 54936 / GB 18030
Unicode / ISO 10646 UTF-7 、 UTF-8UTF-16UTF-32