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