gb2312编码集GBK编码的比较(转)

gb2312编码简介
gb2312(又称为GB 2312-80)编码是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集·*本集》,又称为GB0,由中国国家标准总局发布,1981年5月1日实施。
更多详细介绍http://zh.wikipedia.org/zh-cn/Gb2312

GBK编码简介
GBK全名为汉字内码扩展规范,英文名Chinese Internal Code Specification。K 即是“扩展”所对应的汉语拼音(KuoZhan11)中“扩”字的声母。GBK 来自中国国家标准代码GB 13000.1-93。
更多详细介绍http://zh.wikipedia.org/zh-cn/GBK

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

在实际的项目开发中,使用gb2312编码经常会造成部分人名无法正常显示,所以一般推荐使用GBK编码,比如:

<%@ page pageEncoding="GBK"%>

from:http://www.darkmi.com/blog/archives/1042


载自:http://topic.csdn.net/u/20080523/21/f054cf70-71d5-451d-9f68-3fb0b226741d.html

还有一篇: http://blog.csdn.net/gashero/article/details/1511435

GBK与GB2312的些许不同

也许大家已经看惯了书上说的GBK是对GB2312的扩充,就是说,GB2312字符集中的所有字符都可以在GBK字符集中找到。(by gashero)可是最近在一次调试Python爬虫的过程中就发现了一些字符的不同。同时大家也应该注意一些网页的默认编码字符集了。

当时正在分析的一个网页的默认编码字符集是GB2312,其中含有一个符号"·",这个常作为项目符号。在使用GB2312进行解码时,得到的unicode字符是/u30fb,然后使用系统默认编码GBK进行打印时就提示了编码错误。即字符串"/xa1/xa4"无法使用GB2312解码为unicode字符后再编码为GBK编码显示。(by gashero)实际测试中只要不会交换编码,那么使用同一种编码进行编码和解码就不会出问题。

后来查找得知,字符/u30fb是一种特殊的unicode字符,是一种不允许显示的字符,所以在GBK编码中就没有它的位置(by gashero)。而字符串"/xa1/xa4"使用GBK解码时得到的是/u00b7。

至此得知,虽然网页的默认编码是GB2312,但是实际上使用的是GBK编码,也使用了一些在GB2312和GBK之间不同的编码字符。所以也就导致了这个错误。

建议以后编程序的时候,遇到默认编码为GB2312的大可以直接使用GBK进行解码为unicode字符串。
 

posted on 2011-09-15 14:27  奋斗者  阅读(3259)  评论(0编辑  收藏  举报

导航