服务器与浏览器之间的编码问题

服务器与浏览器之间的编码问题

url编码

URL编码

1. 什么是url

谷歌浏览器地址栏输入的内容
谷歌浏览器对应的URL

IE浏览器地址栏输入的内容
IE浏览器对应的rul

2. 什么是url编码

2.1 在因特网上传输 URL, URL中只能出现ASCII字符集中的字符,才能直接传输。如果出现中文,需要将中文进行编码,转换成ASCII字符。

                            ASCII字符集包括:

                                + 字母和数字:0-9a-zA-Z

                                + 一些特殊符号:$-_.+!*'()     注:不包括双引号

                                + 某些保留字(空格转换为+)

2.2 不同浏览器对中文进行转码的方式不同,以"文"和"章" 两个字为例:

Chrome和火狐:

        先对中文进行 utf-8 编码,再转换成16进制字符,再每个字节前加上%

            中文                              16进制字符                                        url编码

       "文" 和 "章"  -------> "E6 96 87" 和 "E7 AB A0" --------> "%e6%96%87%e7%ab%a0"

IE浏览器:

        "文" 和 "章" --------> "æ" 和 "ç« "

3. 如何编码

通常的URL编码方式也被称为百分号编码(percent-encoding):% + 两位的十六进制字符(0123456789ABCDEF)

先通过一定的编码方式(推荐utf-8),将非ASCII字符转换成两位的十六进制字符,再加上%。正如Chrome和火狐浏览器所做的。

4. 哪里使用了url编码

            1.请求url 

            2.表单提交的数据

url编码的根本目的是解决浏览器与服务器传输数据的问题,非ASCII字符数据都要进行url编码。自然哪里出现了非ASCII字符数据,哪里就要进行url编码。url中的路径、get请求的数据,post请求的数据(例如表单数据,默认是url编码),如果有非ASCII字符数据,就要进行url编码。同时,我们在服务器接收到的数据就是url编码数据(如果浏览器发送过来的数据有特殊字符的话),要对其进行url解码。我们通常所说的编码问题,就是针对进行了url编码的数据而言。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容