深谈字符编码的发展史(ASCII,GB2312,GBK,Unicode,UTF-8)

       因为我先前遇到了很多关于编码这方面的问题,像数据库字段的长度设置存有疑惑,经过多方查找,现在基本洞悉了其中的缘由,现在就让我分享给大家。

     字符编码

        编码是信息从一种形式转变成另外一种形式的过程。用预先规定的方法将文字,数字或其它对象编成数码,或将信息,数据转换成规定的电脉冲信号。解码,是编码的逆过程。

        在计算机编程中,编码是指用代码来表示各种数据,使其成为可利用计算机进行处理和分析的信息。代码是用来表示事物的记号,它可以用数字,字母,特殊的符号或它们之间的组合来表示.

        将数据转换为代码或编码字符,并能译为原数据形式,是计算机书写指令的过程,是程序设计中的一部分。

        因为计算机被设计以二进制形式存储数据(0和1对应电路里的低和高电平),如果要处理文本,就必须先把文本按照某一标准转换成数码后为才能处理。其转化过程中的标准就是预先规定的编码表。比较常用的有ASCII,GB2312,GBK,Unicode,UTF-8由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母,数字和一些符号,这个编码表被称为ASCII(美国信息交换标准码,美国信息交换标 准代码)编码。

深谈字符编码的发展史(ASCII,GB2312,GBK,Unicode,UTF-8)

        随着计算机的普及,遇到了使用表意字符而非字母语言的中,日,韩等国家。在这些国家使用的语言中常用字符多达几千个,而原来字符采用的是单字节编码,对于使用表意字符的语言是在无能为力,因此不同国家都定制自己的标准。

       比如处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码(“信息交换用汉字编码字符集”是由中国国家标准总局1980年年发布,1981年5月1日开始实施的一套国家标准,标准号是GB 2312-1980.GB2312编码适用于汉字处理,汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312)。

       GB 2312的出现,基本满足了汉字的计算机处理需要,但对于人名,古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来制定“汉字编码扩展规范”GBK。

       不难想象,不同的标准放在一起,就会混乱,甚至导致计算机根本不能识别,这就是为什么经常会出现乱码的现象。所以人们在不断寻找这更好的字符编码方案,最后的结果就是Unicode的诞生了。

       统一组织的想法最初也很简单:创建一个足够全的编码,将所有国家的编码都加进来,进行统一标准.Unicode其实对每个字符都固定使用两个字节即16表示位
       没错,这样乱码问题就这样解决了但新的问题又出现了:如果你的文本基本上全部是英文的话,用的Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。所以,本着节约的精神,又出现了把的Unicode编码转化为“可变长编码”的UTF-8编码。

       UTF-8编码把一个的Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。所以

深谈字符编码的发展史(ASCII,GB2312,GBK,Unicode,UTF-8)