服务热线:站内信联系
         

星辉手机版:GB2312何时能够代替UTF-8?

时间:2021-10-14 09:06:17 文章作者:星辉手机版 点击:

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




历史原因,对文字存储的要求、计算机的处理能力和存储能力,覆盖面越来越广。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个民族。它们都有自己的语言和文字,上纲上线的说,您不会是想分裂祖国吧。




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

星辉手机版:GB2312何时能够代替UTF-8?(图1)

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

星辉手机版:GB2312何时能够代替UTF-8?(图2)

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

星辉手机版:GB2312何时能够代替UTF-8?(图3)

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

星辉手机版:GB2312何时能够代替UTF-8?(图4)

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

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

星辉手机版:GB2312何时能够代替UTF-8?(图5)

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

星辉手机版:GB2312何时能够代替UTF-8?(图6)

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

星辉手机版:GB2312何时能够代替UTF-8?(图7)

综上所述

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

星辉手机版:GB2312何时能够代替UTF-8?(图8)

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

星辉手机版:GB2312何时能够代替UTF-8?(图9)


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

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

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




两者根本不是一个概念好不好,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的代名词了。无语中......




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




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

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

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




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


本文由星辉注册【官方首页】编辑发布,转载请注明出处

本文链接:http://iccset.org/article/xinghuiyulexinwen/126.html

【产品推荐】