unicode编码问题由来

来源:互联网 发布:淘宝兼职交押金可靠吗 编辑:程序博客网 时间:2024/05/20 23:58

        每一位软件开发人员必须、绝对要至少具备Unicode与字符集知识(没有任何例外!)

                                                                               -----------《Joel on software(Joel 说软件)》

      在计算机出现的中后期,任命开发了一套ASCII编码:
ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单位元组编码系统,并等同于国际标准ISO 646。以后再加入一些阿西欧的字符就形成了ISO 8859-1latin-1

  ASCII采用8位编码,能够使用32到127之间的数字,空格的编码是32,这种编码实际只用了7个二进制位,是考虑可以将128~255之间的编码用作个人应用。但是由于计算机技术的发展延伸,每个地区的128~255都有自己的设计打算,就导致这些代码在不同地区表示的意义不一致,再加上亚洲国家的字符表有成千上万个字符,这样的字符表用8位显然无法表示,就这样Unicode就应运而生。

  有人错误地认为:Unicode 就是一种每个字符占用16个二进制位,从而总共可以表示65536个可能的字符的16位编码方案,这并不十分正确。

   虽然每个字符用了16位来表示,但是作为以英语为母语的国家的程序员却觉得前面的8位经常用不到,他们也总是抱怨,于是UTF-8就横空出世了。

  UTF-8是另外一种存放字符串的Unicode。它将0~127的代码存放在单个字节里面,只有128以上的才用2个以上字节来存储。这样下来,使用英语的人们就觉得跟ASCII没什么两样。

   下面介绍下关于我们汉字编码的一些知识:


GB 2312或GB 2312-80是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集·基本集》,又称为GB0,由中国国家标准总局发布,1981年5月1日实施。GB2312编码通行于大陆;新加坡等地也采用此编码。几乎所有的中文系统和国际化的软件都支持GB 2312。

GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB 2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

GB 2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖99.75%的使用频率。

对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBK及GB 18030汉字字符集的出现。

GB 2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。


    由于GB 2312-80只收录了6763个汉字,有不少汉字,如部分在GB 2312-80推出以後才简化的汉字(如“啰”),部分人名用字(如中国前总理朱镕基的“镕”字),台湾及香港使用的繁体字,日语及朝鲜语汉字等,并未有收录在内。中文电脑开发商,于是利用了GB 2312-80未有使用的编码空间,收录了所有出现在Unicode 1.1及GB 13000.1-93之中的汉字,制定了GBK编码。

GBK全名为汉字内码扩展规范,英文名Chinese Internal Code Specification。K 即是“扩展”所对应的汉语拼音(KuoZhan)中“扩”字的声母。
 

     根据西方资料,GBK最初是由微软对GB2312的扩展,也就是CP936字码表 (Code Page 936)的扩展(原来的CP936和GB 2312-80一模一样),最初出现于Windows 95简体中文版中,由于Windows产品的流行和在大陆广泛被使用,中华人民共和国国家有关部门将其作为技术规范。注意GBK并非国家正式标准,只是国家技术监督局标准化司、电子工业部科技与质量监督司发布的“技术规范指导性文件”。虽然GBK收录了所有Unicode 1.1及GB 13000.1-93之中的汉字,但是编码方式与Unicode 1.1及GB 13000.1-93不同。仅仅是GB 2312到GB 13000.1-93之间的过渡方案。

    中华人民共和国国家标准总局于2000年推出了GB 18030-2000标准,以取代GBK。GB 18030-2000除了保留了全部GBK编码的汉字外,还增加了大约一百个汉字及四位元组编码空间。

 

原创粉丝点击