1. 为什么要使用URL编码?
URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。
比如不可能这样的网址http://www.快乐编程.com
。这是因为网络标准RFC1738做了规定:
"...Only alphanumerics [0-9a-zA-Z], the special characters "$-_.+!*'(),"
[not including the quotes - ed],
and reserved characters used for their reserved purposes may be used unencoded within a URL."
"只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。"
那么如果URL中存在中文或者其他的文字怎么办呢?这便要使用“URL编码”。
2. 示例
打开浏览器,在网址栏中输入:
回车后,使用开发者工具(F12)查看请求:
"编码" 变成了 "%E7%BC%96%E7%A0%81"
这个转化过程是这样的:
- "编码"经Unicode编码后得到:"E7BC96E7A081"
- 以8位为一组,在每组之间添上%,便得到 "%E7%BC%96%E7%A0%81"。
3. 总结
URL编码的目的是为了解决在URL中不能出现RFC1738规定之外的字符的问题。
其实URL编码是很“混乱的”,“编码”不一定会使用Unicode编码,比如可以使用GBK来编码,那么得到的URL也会随之改变。