小米的博客
感恩能够遇见

平时在写网页的时候经常遇到乱码的问题,这非常让人恼火,编辑的时候明明是正常的,浏览器一解释,就乱码了,实在是让人抓狂。

为什么会这样呢?这就是计算机编码问题。由于计算机比较笨,只认识“0”、“1”这两个数字,所以在我们平时使用电脑处理的各种作业的时候,实际上在计算机内部都是转化为了“0”,“1”这两个数字处理。这就是为什么我们喜欢把电脑里面的资料叫数据的原因,文本叫数据,图片叫数据,视频还是叫数据。

在计算机最初设计的时候采用8位2进制数作为一个计量单元,也就是一byte或一字节。所以一字节能表示的最大整数是255,如果要表示更大的数就必须增加字节,比如两字节就可以最大表示65535,四字节就可以表示(65535)2。又因为计算机是美国人发明的,所以美国人可以很轻松的把他们52个大小写字母和一些特殊数学符号用一字节表示出来。于是美国人把这些字母和特殊符号(总共127个符号)编成了一套编码——就是我们耳熟能详ASCII码。

但我们的中文却做不到用一字节把所有的基本组成单元都表示出来,因为我们中文变化多端,怎么样也得两个字节。据此我国制定了GB2312编码(香港、台湾繁体中文区用的是Big5),这样计算机才开始真正“认识”中文。既然中国人做了一套中文编码,那么日本人就要做套日文编码,韩国人就要做套韩文编码,毛里求斯人就要做套毛里求斯编码。。。。世界上语言这么多就难免会出现冲突,一有冲突乱码问题就来了。为了解决冲突问题,Unicode编码出现了,Unicode通过增加字节长度把世界上所有的编码都统一到这一个编码里面来,这样乱码问题就解决了。但这种编码有一个缺点就是就是占空间,同样的一段英文如果用Unicode编码保存要比ASCII编码保存多用一倍空间,所以本Unicode并不适合所有场合。

那么怎样才能又节省空间又能消除乱码呢?utf-8便诞生了。utf-8是一种针对Unicode可变长度的编码,又称万国码。utf-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母编码成1个字节,汉字是3个字节,很生僻的字符编成4-6个字节。这样在你保存的文本里如果有多种语言且大量是英文字符,那么用utf-8编码就能大大节省空间。

 

这篇文章还没有人发言,快抢第一!

发表评论