JavaScript中的 Global
对象中 encodeURI
和 encodeURIComponent
方法可以对 URI
进行编码,以便发送给浏览器。有效的 URI
中不能包含某些字符,例如空格,而这两个方法可以对这些字符进行编码,用特殊的UTF-8字符代替。
查看以下代码,可以看到 encodeURI
后的结果是出了空格转化为 %20, 其他的都没变, 但 encodeURIComponent
将所有非字母数字字符都进行了转码。
var uri = "http://www.wrox.com/illegal value.htm#start";
//"http://www.wrox.com/illegal%20value.htm#start"
alert(encodeURI(uri));
//"http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start"
alert(encodeURIComponent(uri));
对应的,也有 decodeURI
与 decodeURIComponent
解码方法, 可以看到 decodeURI()
不能将 encodeURIComponent
编码后的字符串进行完全还原。
var uri = "http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start";
//http%3A%2F%2Fwww.wrox.com%2Fillegal value.htm%23start
alert(decodeURI(uri));
//http://www.wrox.com/illegal value.htm#start
alert(decodeURIComponent(uri));
结论: 在实际开发过程中 decodeURIComponent
的使用频率较高,因为更多的是对查询字符串参数进行编码,而不是对uri进行编码