最近在研究Gb18030,以前常听说这个,懵懵懂懂知道大概的意思,不过一直没闹明白ASCII,Unicode, GBK, CJK, 以及GB2312等等之间的关系。 归功于网络,搜集阅读了大量的文章,终于明白了。 这里总结一下,也给那些处在懵懂状态的朋友们,提供一个指引
1. ASCII码(American Standard Code for Information Interchange)
在计算机的内部, 所有的数据存储运算时都是要使用二进制数表示的,但是具体用那个数字表示那个符号每个人都有一套自己的编码规则,而为了不造成混乱,美国的相关标准化组织就在上世纪的五六十年代制定了ASCII编码,标准的单字节字符编码方案。这个标准主要是制定了英语字符和二进制位之间的关系。
ASCII码一共规定了128个字符的编码,由7位二进制数组合来表示,这7位二进制数表示所有的大小写字母,数字0-9,标点符号以及在美式英语种的特殊控制字符。后来在1986年又进行了一次更新,把表格符号,计算符号,希腊字母以及特殊的拉丁符号包含进去,将ASCII码由7位扩充为8位,这样共有256个字符。
2. Unicode
Unicode的出现解决了ASCII码的国家地域的限制, 特别是亚洲国家的一些文字符号的编码。Unicode为每种语言的每个字符设定了了同意并且唯一的二进制编码,满足了跨语言,跨平台进行文本转换,处理的要求。历史上曾有俩个组织试图设计Unicode:国际标准化组织(ISO)和unicode.org. ISO开发了ISO 10464项目,而Unicode协会开发了Unicode项目。 但是到上世纪九十年代初,双方意识到世界不需要俩个不兼容的字符集。于是从Unicode2.0开始Unicode项目和ISO 10464项目采用相同的字库和字码。所以我们现在经常会看到这种说法:Unicode 3.1.0与ISO 10464-x是一样的。
3. GB码即GB2312-80
这个是80年发布的,在大陆以及海外使用简体中文的地区是强制使用的唯一中文编码。是双字节编码。GB2312-80一共收录了7445个字符包括6763个汉字和682个符号。但是GB231支持的汉字太少了,1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。也就是说GBK字符集是GB2312的扩展,利用GB2312-80未使用的编码空间,收录所有出现在Unicode1.1以及GB13000.1-93中的汉字。 共有21003 个汉字和863个符号。
4. Big5
Big5字符集的产生是因为当时GB2312编码并未收录繁体字。Big5也是双字节编码方案。共有13461个汉字和符号。