最早,计算机使用7位编码来表示英语字符,而其他使用拉丁字母、希腊字母、西里尔字母、希伯来字母等的语文,由于只使用数十个字母,传统上均使用8位编码的ISO/IEC 8859标准来表示。
但由于汉语、日语及朝鲜语字数众多,无法用单一个8位字符来表达,故需要多于一个字节来代表一个字。于是,ISO 2022就设计出来让汉语、日语及朝鲜语可以使用数个7位编码的字符来示(当时通信领域的协议采用了第8位做校验纠错用途)。
GB 2312-80 即 GB2312, 遵循 ISO 2022 由中国国家标准总局发布,1981年5月1日实施,收录6763个汉字。
EUC(Extended Unix Code)使用8位编码来表示字符的方法,于1991年标准化,这是针对 Unix 系统,由一些 Unix 公司所开发,遵循于 ISO 2022,而 EUC-CN 就是 GB2312 的编码实现,可以说通过 EUC 把 GB2312 给标准化了。
早期的 window 遵循 EUC 编码规范,将 EUC-CN 规定为 CP936(Code Page),这时可以认为 EUC-CN = CP936 = GB2312
1993年,Unicode 1.1 版本推出,收录中国大陆、台湾、日本及韩国通用字符集的汉字,总共有20,902个。
同年,我国制定等同于 Unicode 1.1 的 GB 13000.1-93,这仅是标准
在我国颁布 GB 13000.1-93 后,微软正在做 window95,鉴于我国制作了 GB 13000.1-93 的标准,于是将 CP936 中未使用的编码空间,用 GB 13000.1-93 中不包含在 GB2312 的字符做扩展,这个时候是不是叫GBK有待商榷,肯定是CP936的扩展,由于微软编码页其内在的编码不同于国标的编码, 这时 CP936=GBK≠GB 13000.1-93, GBK兼容GB2312
为了配合 UNICODE 的实施,全国信息技术标准化技术委员会于1995年12月1日制订了《汉字内码扩展规范》(GBK), 这时 CP936≠GBK(但仍然可以说CP936指代GBK),GBK 定义之字符较 CP936 多出95字,但是 CP936 未做修改。
2005年 GB 18030-2005 发布,考虑到GBK使用的广泛性(感谢盗版),GB18030完全兼容GBK,不兼容 GB 13000.1-93
参考---
再谈字符编码。关于EUC,EUC-CN和codepage936 - http://hi.baidu.com/xyk34/item/7bdca45fa33eacc09e2667f9