url编码
1. 什么是url
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编码的数据而言。