浏览器Url编码与解码
Url为什么需要编码
因为有些字符会引起歧义,如“&”“=” “#”“?”“:”“/”,需要进行转义即编码
举例说明: username = 'a&foo=boo’不编码的话会得到username = 'a’和foo=‘boo’
Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。否则如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成问题编码方法
URI (Uniform Resource Identifiers,通用资源标识符)
使用Global对象的encodeURI()和encodeURIComponent()方法进行编码,用特殊的UTF-8编码替换所有无效的字符,从而让浏览器能够接受和理解。
decodeURI()和decodeURIComponent()两种解码方法区别:
dencodeURI() 不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号;
dencodeURIComponent() 则会对它发现的任何非标准字符进行编码; 一般来说,我们使用dencodeURIComponent()
方法的时候要比使用dencodeURI()更多,因为在实践中更常见的是对查询字符串参数而不是对基础URL进行编码;
注意:若在代码里修改url编码,可以先在浏览器里"在线转换工具"里先转换测试,看使用哪种方法能转换成功。