课程章节:聊聊HTTP协议中的编码和解码(上)
课程讲师:风落几番
课程内容:
不同的编码方式节约的空间不一样。一个较短的二进制数通过一种编码方式转换成编码字符集中对应的地址,然后在字库表里找到一个对应的字符,最终显示给用户。
常见的编码规范:
ASCII码:是最早产生的编码规范,128个字符
GBK:所有字符都占两个字节。后来,计算机开始普及到了中国,但面临的一个问题就是字符,汉字博大精深,常用汉字有3500个,已经大大超出了 ASCII 字符集所能表示的字符范围了,即使是 EASCII 也显得杯水车薪,1981 年国家标准化管理委员会定了一套字符集叫GB2312,每个汉字符号由两个字节组成,理论上它可以表示65536个字符,不过它只收录了7445个字符,6763个汉字和682个其他字符,同时它能够兼容 ASCII,ASCII 中定义的字符只占用一个字节的空间。GB2312 所收录的汉字已经覆盖中国大陆99.75%的使用频率,但是对一些罕见的字和繁体字还有很多少数民族使用的字符都没法处理,于是后来就在 GB2312 的基础上创建了一种叫 GBK 的字符编码,GBK 不仅收录了27484 个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。GBK 是利用了 GB2312 中未被使用的编码空间上进行扩充,所以它能完全兼容 GB2312和 ASCII。而 GB 18030 是现时最新的字符集,兼容 GB 2312-1980 和 GBK, 共收录汉字70244个,采用多字节编码,每个字符可以有1、2、4个字节组成,某种意义上它能容纳161 万个字符,包含繁体汉字以及日韩汉字,单字节与ASCII兼容,双字节与GBK标准兼容。
ISO-8859-1:除了ASCII字符外,还包括了西欧语言,希腊语,泰语,阿拉伯语,希伯来语等等。把其他任何编码当做ISO-8859-1来进行解码时候,都没有问题。只占1个字节。不支持中文。MySQL默认编码。 上面的几种编码规范,各种编码规范是不兼容的,只能表示自己需要的字符。
Unicode:包含全世界所有的字符,最多可以保存四个字节容量的字符。UTF-8是一种变长字符编码,是编码方式。英文一个字节,中文三个字节。
3.乱码由来
编码和解码使用的编码方式不一致,或者编码的时候它的字库表里不包含相应字符
4.URL的编码与解码
URL是采用ASCII字符集进行编码的,所有如果URL中含有非ASCII字符集中字符,要对其进行编码。
URL中一些保留字符,如“&”表示参数分隔符,如果想要在URL中使用这些保留字,那就需要编码
%编码规范:
对URL中属于ASCII字符集的非保留字不做编码;对URL中的保留字需要取其ASCII内码,然后加上%前缀将该字符进行编码;对于URL中的非ASCII字符
课程收获: