字符编码 ASCII,Unicode,UTF-8的关系

一、为什么要有编码?

因为计算机只能处理数字,所以如果想要处理字符串就需要把字符串先转成数字。这个转换就需要有一个字符到数字的映射表,也就是编码。


二、什么是ASIIC码?

因为计算机是美国人发明和最早使用的,他们为了解决计算机处理字符串的问题,就将数字字母和一些常用的符号做成了一套编码,这个编码就是ASIIC码。ASIIC码包括数字大小写字母和常用符号,一共128个,1字节(byte)=8bit,8bit能表示的最大数是256,所以ASIIC编码中一个字符的大小就是1个字节


三、什么是Unicode编码?

计算机进入中国,我们发现美国人制定的ASIIC完全不够用,于是我们就制定了自己的GB2312编码,把汉字编码了进去。

同样的事情发生了在了俄罗斯,法国,日本等等,各国都开始制定自己的一套编码,计算机的编码越来越庞大,越来越乱,为了解决这一问题,Unicode应运而生。Unicode将各国文字统一编码。

所以Unicode编码可以看做是ASIIC的扩展。


四、什么是UTF-8?

UTF-8编码可以理解成Unicode编码的一种升级,为什么要升级呢?为了节省存储空间。

ASIIC编码一共128个,所以1个字节就可以搞定,Unicode编码通常是2个字节。

例如:A的表示

ASIIC 01000001
Unicode 00000000 01000001


可以想象,如果是纯英文的文章用Unicode编码,会浪费很多字节的存储空间。为了解决这个问题,就把Unicode编码升级成了可变长度的编码也就是UTF-8编码,在UTF-8编码中,数字字母都是一个字节,超过ASIIC码的部分用两个或者三个字节表示。举例:

字符 A 用三种编码存储:

Asiic 01000001
Unicode 00000000 01000001
UTF-8 01000001


你可能感兴趣的:(PHP)