GB2312何时能够代替UTF-8?

真能挑事啊,还知道GB2312,请问GB2312的6763个字符能能覆盖博大精深的汉语言文学吗?另外GBK和GB18030了解一下?UTF-8是国际标准,GB2312永远代替不了UTF-8,何况还有UTF-7、16、32等等,与其胡思乱想,不如多学习吧。




编码如果我们只认识UTF-8和GB2312就显得格局太小了,甚至于有非常多人不了解它们是什么,又代表了怎样的含义,所以才提出GB2312何时能够代替UTF-8的问题。

众所周知目前的机器仅能识别“0”和“1”,也就是说机器只能够处理数字,想要处理文本,就必须先把文本转换为数字机器才能处理。举个例子:字母“A”是一个字符,在ASCII码中十进制数“65”就表示字符“A”,用二进制数表示就是“0100 0001”。这时我们就能很好地理解编码了,编码表非常像一本字典,只有它的存在二进制数、十进制数、字符之间才能相互转换,像极了一本密码本,只有拥有这本密码本才能相互解密,要不看着就是乱码。

最早出现的编码是ASCII,因为计算机最早是由美国人发明的,所以ASCII里最早只有127个字符被编码到计算机里,包括了大小写英文字母、数字和一些符号。

如果全世界的人都使用英文那么编码后面就不会发生那么多事了,26个字母大小写也就是52个,数字0^9,再加上标点符号和其他一些符号,但事实并不是这样的全世界有上百种语言,所以各国都有各国的编码标准。比如中国大陆几乎所有的中文系统和软件都支持GB2312(GB就是国标的意思),它几乎满足了计算机中汉字99.75%的使用频率,但人名、古汉语等会出现罕用字,所以才出现了后来的GBK、GB18030汉字字符集。

各国的编码各顾各的就导致了乱码

过去word文档打开常常就是一堆乱码,就是编码导致的,没有识别到正确的编码显示就是乱码。

因此Unicode字符集编码就出现了,它将世界上所有语言都统一到了一套编码里面,这样就不会再出现乱码的问题了,所以操作系统和大多数编程语言就开始直接支持Unicode字符集编码。

Unicode字符集确实是解决了乱码的问题,但如果你写的文本基本都是英文的话,用Unicode编码会比ASCII编码需要多出一倍的存储空间,因为ASCII编码是1个字节,而Unicode编码通常是2个字节。比如字母“A”用ASCII编码二进制是01000001,而采用Unicode编码就是00000000 01000001,这样在存储和传输的效率上就显得特别的不划算。于是Unicode编码就演变为可变长编码的UTF-8编码,常用的英文字母被编码为1个字节,汉字通常是3个字节,而一些生僻字符则会编码成4~6个字节,这样就能节省存储资源、提高传输的效率。

综上所述

GB2312是字符中文编码的一种国家标准,而UTF-8囊括了几乎所有国家的常用字符编码,名副其实地成为了万国编码。既然有万国编码的存在,为什么GB2312又没有消失呢?这是因为我们可能还需要显示一些不同寻常、不常见的汉字,所以就不能完全才有万国编码。

要实现UTF-8编码和GB2312编码的转换必须先把UTF-8编码还原成Unicode编码,再把Unicode编码转化成GB2312编码,同样GB2312转换成UTF-8也是同样的道理。所以别再提GB2312合适能够代替UTF-8的问题了,这样会显得特别没有文化。


以上个人浅见,欢迎批评指正。

认同我的看法,请点个赞再走,感谢!

喜欢我的,请关注我,再次感谢!




历史原因,对文字存储的要求、计算机的处理能力和存储能力,覆盖面越来越广。GB231270年代末的设计的,在原ASCII码基础上扩展出更大容量的编码,以容纳数量众多的汉字,以及日本、俄文等符号。

UTF-8是unicode的一种存储格式,对应Unicode编码的所有字符,包含东西方文字,亚洲文字涵盖中日韩,中文涵盖少数民族文字。

GB只流行于大陆,连大中华地区都没覆盖,但是UTF8全球通用。

  • GB2312,1980年发布,收入汉字6763个(基本是简体)。
  • GBK,1995年发布,收录21003个汉字(常用简体、繁体)。
  • GB18030,2000年发布,2005修订了,又扩展了B区,以支持更多的汉字。

GBxxx好处是存储容量小,一个汉字2字节,utf8需要3-4字节,对大量使用中文的大陆计算机来说GBxxx可以节约存储、传输效率,但是在互联网上会带来乱码,需要进行编码转换。

GB是国家强制标准,包括Windows在内的操作系统,办公软件必须支持GB才是合格产品,才能在市场销售,只支持的UTF-8的洋软件不符合国标,在国内销售受限。


GB2312已经是被替代标准,现在的软件都支持GB18030,GBK都会被替代。GB2312替代UTF8基本就是蒸汽机替代电车,没有可能性。




Unicode 编码涵盖了世界上几乎所有的语言,而GB2312只有中文简体+日语片假名+俄语字母。

支持GB2312编码的程序,只能在支持GB2312的系统上运行,否则就会产生乱码。中国很大,语言也不只有简体中文,还有繁体中文、蒙语、藏语、朝鲜语等等。这些语言的文字GB2312都不能支持。我猜您是出于民族自豪感的情怀,想让GB2312独占中国市场。可是别忘了中国不仅仅有大陆,还有香港、台湾;不仅仅有汉族,还有其它55个民族。它们都有自己的语言和文字,上纲上线的说,您不会是想分裂祖国吧。




两者根本不是一个概念好不好,GB2312是字符编码;utf-8是传输编码。GB2312同等含义的国际编码叫unicode。unicode是国际字符编码。

unicode编码中的中文字符使用了全部的16bits,而英文字符只使用了uincode的8bits。而英文在传输及存储过程中,使用频率又特别大,在使用完整unicode的情况下,文件尺寸差不多比纯英文字符大一倍。为了节约存储/传输空间,对unicode进行了二次编码(也可以理解为数据压缩算法),这才有了utf-8。理论上讲,GB2312的文本在存储过程中也可以使用utf-8,两者根本不冲突。

所以GB2312和utf-8完全是两个概念,这几年,面试过程中遇到很多java程序员,根本搞不清楚这两个概念,其中不少程序员都分布在bat中,说实话,挺丢人的,跟他们讲道理,还不听,因为utf-8已经潜规则编程unicode的代名词了。无语中......




事实上gb2312早已经被淘汰了,至少最近10年来新开发的软件和网页都没人再用它了,是教材资料里才会提到的“历史名词”。utf-8是主流编码,未来几十年也会一直沿用下去,因为它可以编码世界上几乎所有文字和绝大多数常用符号,是相当完整的编码标准,没有被替换的理由。




问题说反了,其实现在UTF-8差不多已经是事实标准,而GB2312可以说是完全成为过去时了。其实原因确实也很简单,就是兼容性。


GB2312作为上个世纪80年代公布的一项国家标准,在当时确实很有意义。但是随着科技发展,其实已经完全不能满足现在计算机系统的需要了。因为GB2312作为一项中国的标准,只收录了不到七千多个汉字,虽然能够满足基本的汉字需求。但是对于现在各种繁体字以及其他民族的文字没有收录,所以很多场合其实并不能满足。

第二个就是兼容性了。随着linux以及开源文化的流行,世界各种文化背景的人都参与到了程序开发中。自然就产生了一种需求,就是如果有种编码能够兼容世界上所有文字,能够在任何场合显示正确不出乱码。而UTF8恰恰就可以满足这种需求。所以linux很早就提供了对UTF8的完整支持。

所以现在有两条路,一条路是独木桥,你自己走过去没啥问题,但是想要和人家互通,就要付出编码转码的代价,很容易出现乱码问题;而另外一条路是宽敞大道,你走上去可以和世界互通不出任何问题。我相信不管是谁,肯定都会选择第二条路。




  • GB2312,1980年发布,收入汉字6763个(基本是简体)。
  • GBK,1995年发布,收录21003个汉字(常用简体、繁体)。
  • GB18030,2000年发布,覆盖所有Unicode code point(理论上有1114112个)。

在存储常用汉字时,UTF-8比GB系列占用空间多。

一个常用汉字(BMP内,code point<=0xFFFF)用UTF-8需要3个字节,用GB系列只要2个字节。




这不是等于在问30年前的功能机啥时候能取代苹果和安卓吗?大概是互联网技术再也没法用的时候吧。




GB2312是1980年制定的,GBK是1995年制定的,GB18030是2000年和2005年制定的,GB2312太老了,很多汉字不在其中,例如䶮、瓅、珺、

展开阅读全文

页面更新:2024-03-15

标签:汉字   万国   字符集   英文   乱码   中文   字节   字母   符号   字符   简体   常用   语言   文字   标准   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top