我对自己知道关于url的编码和解码的一些进行了一下整理。
我们的例子是百度翻译的地址:
在面对这样一串的URL地址,我们知道是协议(http)://域名(fanyi.baidu.com):端口(默认8080)/虚拟目录(translate#en/zh)/参数
通过浏览器会对URL进行解码后发送给web服务器,当服务器返回用户的请求时会对其进行编码此时呈现在浏览器上的URL就是编码后的了。这样的好处是保护用户的隐私,当然还有其他原因我了解的也不多,知道的可以留言。
decodeURIComponent():可对encodeURIComponent()函数编码的URI进行解码。
decodeURI():可对 encodeURI() 函数编码过的 URI 进行解码。
注意:[2] ECMAScript v3 已从标准中删除了 unescape() 函数,并反对使用它,因此应该用 decodeURI() 和 decodeURIComponent() 取而代之。
encodeURIComponent():可把字符串作为URI 组件进行编码。
encodeURI():可把字符串作为 URI 进行编码。
如何对URL进行解码:
谷歌浏览器右击检查-->点击console-->输入decodeURIComponent(“URL地址”)回车
例子:
decodeURIComponent(“http://fanyi.baidu.com/translate#en/zh/The%20%22%3F%20argument%20(number%2030)%20is%20not%20recognized%20within%20%22ITEMDATA%22”)
可以很明显看出与它解析出来的就是我在百度翻译页面对英文进行翻译。
参考资料:
http://blog.csdn.net/ergouge/article/details/8185219
http://www.cnblogs.com/shuiyi/p/5277233.html
https://baike.baidu.com/item/decodeURIComponent%28%29%E5%87%BD%E6%95%B0/7513726?fr=aladdin
https://baike.baidu.com/item/decodeURI()%20%E5%87%BD%E6%95%B0/7376284
https://baike.baidu.com/item/encodeURIComponent%28%29%20%E5%87%BD%E6%95%B0
https://baike.baidu.com/item/encodeURI%E5%87%BD%E6%95%B0/7325312