微软代码页 936

来自GSXAB的知识库
微软代码页 936
术语名称 微软代码页 936
英语名称 Microsoft code page 936
别名 MS-936, CP936, Windows 936

微软代码页 936 是微软在 Windows 系列上表示简体中文所使用的字符集字符编码,最初是 GB 2312EUC-CN 编码的实现,后来扩展到 GBK 上。尽管存在一些差异及版本经常滞后于标准的问题,由于微软代码页 936 在 IANA 被注册为 GBK ,它也经常被视为 GBK 的事实性标准。另外,由于 GBK 不是标准而是指导规范,实际使用 GBK 或 MS936 字符集的场景也会被标注为 GB 2312 。

需要注意,微软代码页 936 不是 IBM 代码页 936 ,即称为 Shift GB 的字符编码。

尽管被视为 GBK 的事实标准,代码页 936 本身有前后多个版本,而且与 GBK 之间有一些可忽略不计的微小差异。比如一开始的代码页 936 只支持 GB 2312 ,后续逐渐兼容为 GBK 范围;在 GBK 中被预留未分配的 0x80 码位被分配给单字节的欧元符号,代码页 936 严格地说支持的是 GB 13000.1-93 (即 Unicode 1.1)的范围,对于 GBK-1995 中增补在原 PUA 区的 95 个文字并没有处理。此外,作为实用的实现,在 GBK 保留的私有区(private use area, PUA)码位,大量标注为 GB 2312 的字体库及软件中都有不同情况的使用,使用情况有差异且互不兼容,而且在后续标准将这些字正式收录编码后没有把这些严格地说没有被编码的字清理出 PUA 区,释放这些本应是临时的位置,导致部分字后续出现双码和转换错误。


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