本文转自:http://www.blogjava.net/zhenandaci/archive/2008/12/24/248056.html
GB2312是对中国的开发人员来说很重要的一个词汇,它的来龙去脉并不需要我在这里赘述,随便Google之便明白无误。我只是想提一句,记得前一节说到编码字符集和字符集编码不是一回事,而有的字符集编码又实际上没有做任何事,GB2312正是这样一种东西!
GB2312最初指的是一个编码字符集,其中包含了ASCII所包含的英文字符,同时加入了6763个简体汉字以及其他一些ASCII之外的符号。与Unicode有UTF-8和UTF-16一样(当然, UTF-8和UTF-16也没有被限定只能用来对Unicode进行编码,实际上,你用它对视频进行编码都是可以的,只是编出的文件没有播放器支持罢了,哈哈),GB2312也有自己的编码方案,但这个方案直接使用一个字符在GB2312中的编号作为存储值(与UTF-32的做法类似),也因此,这个编码方案甚至没有正式的名称。我们日常说起GB2312的时候,常常即指这个字符集,也指这种编码方案。
GBK是GB2312的后续标准,添加了更多的汉字和特殊符号,类似的是,GBK也是同时指他的字符集和他的编码。
GBK还是现如今中文Windows操作系统的系统默认编码(这正是几乎所有网页上的,文件里的乱码问题的根源)。
我们可以这样来验证,使用以下的Java代码:
System.out.println(encoding);
输出结果为
GBK
(什么?你的输出不是这样?怎么可能?完了,我的牌子要砸了,等等,你用的繁体版XP?我说你这同志在这里捣什么乱?去!去!)
说到GB2312和GBK就不得不提中文网页的编码。尽管很多新开发的Web系统和新上线的注重国际化的网站都开始使用UTF-8,仍有相当一部分的中文媒体坚持使用GB2312和GBK,例如新浪的页面。其中有两点很值得注意。
第一,页面中meta标签的部分,常常可以见到
charset=GB2312
这样的写法,很不幸的是,这个“charset”其实是用来指定页面使用的是什么字符集编码,而不是使用什么字符集。例如你见到过有人写“charset=UTF-8”,见到过有人写“charset=ISO-8859-1”,但你见过有人写“charset=Unicode”么?当然没有,因为Unicode是一个字符集,而不是编码。
然而正是charset这个名称误导了很多程序员,真的以为这里要指定的是字符集,也因而使他们进一步的误以为UTF-8和UTF-16是一种字符集!(万恶啊)好在XML中已经做出了修改,这个位置改成了正确的名称:encoding。
第二,页面中说的GB2312,实际上并不真的是GB2312(惊讶么?)。我们来做个实验,例如找一个GB2312中不存在的汉字“亸”(这个字确实不在GB2312中,你可以到GB2312的码表中去找,保证找不到),这个字在GBK中。然后你把它放到一个html页面中,试着在浏览器中打开它,然后选择浏览器的编码为“GB2312”,看到了什么?它完全正常显示!
结论不用我说你也明白了,浏览器实际上使用的是GBK来显示。
新浪的页面中也有很多这样的例子,到处都写charset=GB2312,却使用了无数个GB2312中并不存在的字符。这种做法对浏览器显示页面并不成问题,但在需要程序抓取页面并保存的时候带来了麻烦,程序将不能依据页面所“声称”的编码进行读取和保存,而只能尽量猜测正确的编码。
相关推荐
国标一二级汉字字符集是指在中国大陆地区广泛使用的汉字编码标准,包括GB2312和GBK两个标准。GB2312是在1980年由中国国家标准总局发布的一个字符集,它收录了6763个汉字和682个其他符号,共7445个字符,分为一二级...
### GB 2312-1980 信息交换用汉字编码字符集 基本集 #### 一、GB 2312-1980简介 GB 2312-1980是中华人民共和国国家技术监督局于1980年发布的信息交换用汉字编码字符集的基本集,它是中国最早的一套国家标准汉字...
GB2312编码是一种在中国大陆广泛使用的简体中文字符集,它包含了6763个常用汉字和一些其他字符。在JavaScript中进行GB2312编码和解码可以帮助我们正确地在不同环境间传输和展示中文字符。 首先,让我们理解GB2312...
GB2312是中国国家标准局于1980年发布的一种汉字编码标准,全称为《信息交换用汉字编码字符集·基本集》。它是中华人民共和国第一个汉字编码国家标准,主要用于中国大陆地区以及部分东南亚地区的简体中文文本处理。 ...
GBK字符集不仅包含了GB2312的所有汉字和符号,还增加了大量的汉字,并对一些常用但未被GB2312收录的汉字进行了补充,使得GBK成为了更加全面的汉字编码方案。 #### 二、GBK与GB2312的关系 1. **兼容性**: GBK兼容GB...
在深入探讨JAVA与字符集编码问题之前,我们首先需要理解不同字符集编码的基本概念以及它们在JAVA环境中的应用。字符集编码是计算机系统中表示文字的一种方式,它决定了如何将字符转换为二进制数据,以便于存储和传输...
GB2312编码,全称是《信息交换用汉字编码字符集·基本集》,是中国国家标准局于1981年5月1日发布的一种针对简体中文的字符编码标准,也被称作GB0。该编码标准是为了解决中文信息处理的问题,尤其在计算机系统中的...
通过对ISO 8859-1、GB2312/GBK、Unicode和UTF等常见编码的理解,以及Java提供的字符串操作方法(如`getBytes`和`new String`),开发者可以有效地解决实际项目中的字符编码问题,确保应用程序能够正确地处理各种文本...
### GB2312字符集解析与应用 #### GB2312-80简介 GB2312-80是一种广泛应用于中国大陆的汉字编码标准,由中华人民共和国国家标准总局于1980年发布。它是中国最早的一种汉字编码方案之一,支持大约6763个常用汉字...
本文主要探讨了ASCII码、GB2312以及Unicode字符集之间的区别,并详细介绍了如何将Unicode编码转换为GB2312编码。 ASCII码是最早且最基础的字符集编码,它使用7位二进制来表示128个字符,涵盖了英文中的字母、数字、...
在进行嵌入式系统或单片机编程时,常常需要处理字符编码问题,GB2312编码作为一种早期的中文字符集,对于处理中文字符在早期的计算机系统和设备中扮演了重要角色。这款工具能够帮助用户快速查找并理解汉字的GB2312...
GB18030,全称为《信息技术——汉字编码字符集——基本集的扩充》,是中国国家强制性标准,是GBK字符集的进一步扩展,旨在支持更多的汉字以及少数民族文字。在IT领域,尤其是涉及到中文处理的系统和应用中,对GB...
在探讨Java字符集和编码之前,我们先了解一下为什么在Java编程中需要关注字符集和编码。Java作为一种广泛应用的编程语言,其内部采用的是Unicode编码,这使得Java能够很好地支持全球化的应用开发。然而,在实际的...
GB2312编码是中国国家标准简体中文字符编码,全称为《信息交换用汉字编码字符集 基本集》,由中华人民共和国国家标准GB 2312-80定义。它是中国第一个正式的汉字编码标准,主要用于简化字的计算机编码表示,容纳了...
GBK和GB2312是中国常用的两种汉字编码标准,它们都是中文信息处理的重要组成部分,尤其在早期的计算机系统和网络中广泛使用。本文将详细解析这两种编码格式的特点、区别以及与汉字和字符的关系。 首先,GB2312是...
GB2312采用了双字节编码方式,每个字符占用两个字节,适合处理简体中文文本。 2. UTF-8编码:UTF-8是Unicode Transformation Format的缩写,是一种变长的Unicode编码方式。它可以表示Unicode字符集中所有的字符,...
GB2312字符集 作用:国家简体中文字符集,兼容ASCII。 位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。 范围:高字节从A1到F7, 低字节从A1到FE。将高字节和低字节分别加上0XA0...
在Java编程语言中,理解和掌握字符集编码是至关重要的,特别是在处理各种文本数据时。本文主要探讨了编码字符集和字符集编码的区别,这对于软件开发人员来说是基础且必要的知识。 首先,我们要区分两个概念:编码...
GB2312编码表是一种使用双字节对汉字及其符号进行编码的标准,它的全称是《信息交换用汉字编码字符集 基本集》。GB2312编码涵盖了6763个汉字和682个其它符号,其中包括英文字符和一些特殊符号。该编码由中华人民...
GBK字符集是中国大陆地区广泛使用的汉字编码标准,它兼容GB2312,并增加了对繁体字和其他符号的支持,包含了约2万个汉字。在DB2中配置GBK字符集,是为了确保数据库能够正确地存储和检索中文数据。 1. **安装与配置*...