`

GBK 与GB2312

阅读更多

      GB2312是对中国的开发人员来说很重要的一个词汇,它的来龙去脉并不需要我在这里赘述,随便Goolge之便明白无误。我只是想提一句,记得前一节说到编码字符集和字符集编码不是一回事,而有的字符集编码又实际上没有做任何事,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代码:
  String encoding=System.getProperty("file.encoding");
  System.out.println(encoding);
  输出结果为GBK
  说到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中并不存在的字符。这种做法对浏览器显示页面并不成问题,但在需要程序抓取页面并保存的时候带来了麻烦,程序将不能依据页面所“声称”的编码进行读取和保存,而只能尽量猜测正确的编码。

分享到:
评论

相关推荐

    GBK.rar_GB2312-80_GBK_gb2312_gb2312-To-unicode_汉字编码

    《GBK与GB2312-80:汉字编码的历史演变与应用》 在信息技术领域,汉字编码是一种至关重要的技术,它使得计算机能够识别、存储和处理汉字。本篇文章将深入探讨“GBK”和“GB2312-80”这两种汉字编码标准,以及它们在...

    GB18030编码研究以及GBK,GB2312,GB18030与Unicode的映射,乱码解决

    ### GB18030编码研究以及GBK,GB2312,GB18030与Unicode的映射,乱码解决 #### 1. GBK与GB2312的关系 - **GB2312**:该标准包含了682个图形符号,并将它们放置在1区。它是中国大陆最早制定的汉字编码标准之一,主要...

    UTF-8和GBK及GB2312的区别

    ### UTF-8与GBK及GB2312的区别 #### 一、引言 随着互联网技术的发展和全球化的深入,不同国家和地区之间的信息交流日益频繁。为了满足这种需求,多种字符编码标准应运而生,其中UTF-8、GBK和GB2312是中文环境中最...

    关于GBK、GB2312、UTF8

    关于GBK、GB2312、UTF8,按照GBK18030、GBK、GB2312的顺序,3种编码是向下兼容,同一个汉字在三个编码方案中是相同的编码。

    utf-8、gbk、gb2312区别

    ### UTF-8、GBK、GB2312的区别 在计算机科学领域,字符编码是将文字转换为二进制数字以便计算机处理的过程。常见的字符集包括UTF-8、GBK、GB2312等,它们各有特点,在不同的场景下被广泛应用。 #### GB2312编码 *...

    关于GBK和GB2312所有的汉字及字符

    GBK和GB2312是中国常用的两种汉字编码标准,它们都是中文信息处理的重要组成部分,尤其在早期的计算机系统和网络中广泛使用。本文将详细解析这两种编码格式的特点、区别以及与汉字和字符的关系。 首先,GB2312是...

    GBK.enc GB2312.enc XML读取时编码格式

    总之,理解和正确处理GBK与GB2312等不同的字符编码对于进行跨平台、跨语言的数据交换至关重要,尤其是在处理中文内容时。在编程中,我们需要确保XML文件的编码声明与实际编码一致,并使用正确的解码方法读取和写入...

    GBK编码表,对GB2312编码的有效扩展。

    #### 六、GBK与GB2312的区别 虽然GBK完全兼容GB2312,但它在编码范围和字符集方面做了显著的扩展。GB2312只包含了6763个常用汉字以及682个图形符号,而GBK则收录了超过21000个汉字。这使得GBK能够满足更广泛的应用...

    国标一二级汉字字符集:GB2312、GBK

    国标一二级汉字字符集是指在中国大陆地区广泛使用的汉字编码标准,包括GB2312和GBK两个标准。GB2312是在1980年由中国国家标准总局发布的一个字符集,它收录了6763个汉字和682个其他符号,共7445个字符,分为一二级...

    unicode与GB18030(GB2312,GBK) 转换码表

    GBK是在GB2312基础上的扩展,增加了对GBK18030之前其他编码系统的兼容,包括BIG5(用于繁体中文)和GB2312不涵盖的一些少数民族文字,共收录了20902个汉字和符号,是GB2312的一个广泛使用的扩展版本。 转换码表是...

    GBK1.0和GB2312的汉字

    GBK1.0同样采用双字节编码,其编码空间与GB2312兼容,即保留了GB2312的编码范围,但在GB2312未使用的编码区域内增加了新的字符。GBK1.0的高位字节范围扩大至0x81到0xFE,低位字节范围不变,从而能容纳更多的汉字和...

    GBK GB2312 UTF-8 ISO-8859-1区别

    字符编码标准之GBK、GB2312、UTF-8和ISO-8859-1的比较 字符编码标准是计算机领域中的一项基本技术,用于将文字或符号转换为计算机能够识别的二进制代码。常见的字符编码标准有GBK、GB2312、UTF-8和ISO-8859-1等,...

    C#写的 GBK GB2312 UTF-8转换

    GBK、GB2312和UTF-8是三种常见的字符编码标准,每种都有其特定的应用场景和特点。C#作为.NET框架下的主要编程语言,提供了丰富的类库支持对不同编码格式之间的转换。 1. **GBK编码**:GBK是中国大陆广泛使用的汉字...

    GBK对应GB2312中的同音字

    GBK编码(GB2312中没有的部分)对应GB2312编码中的同音字

    UTF-8 Unicode GBK GB2312 编码之间的区别和联系

    - **转换路径**:GBK、GB2312与UTF-8之间的转换必须通过Unicode编码来进行。 - **GBK、GB2312 → Unicode → UTF-8** - **UTF-8 → Unicode → GBK、GB2312** - **示例**:假设一个汉字在GBK中的编码为`b030`,其...

    GBK,GB2312,BIG5内码转换

    GBK GB2312 BIG5 三种常见的中文内码转换,代码

    GBK/GB2312/UTF8编码转换

    GBK/GB2312/UTF8编码的文件相互转换, 主要应用于网站编码方式的整体转换上。

    gb2312标准字符集和gbk标准字符集

    《GB2312与GBK字符集详解》 在信息技术领域,字符编码是至关重要的一个环节,它决定了计算机如何理解和显示各种文字。GB2312和GBK是中国大陆广泛使用的两个字符编码标准,它们为汉字提供了数字化的表示方式,使得...

    字符编码:GBK、GB2312、UTF-8

    本文主要讨论了三种常见的字符编码:GBK、GB2312以及UTF-8。 首先,GBK编码是基于GB2312标准的扩展,兼容GB2312,是中国大陆广泛使用的编码系统。GBK使用双字节来表示所有字符,对于中文字符,其最高位被设置为1,...

Global site tag (gtag.js) - Google Analytics