escape对字符串(string)编码,另外两种对url进行编码。
escape
这几个字符不会被编码:ASCII字母、数字、@*/+ ,其余的都会。
encodeURI
不会对下列字符编码 ASCII字母、数字、~!@#$&*()=:/,;?+'
encodeURIComponent
不会对下列字符编码 ASCII字母、数字、~!*()'
所以encodeURIComponent比encodeURI编码的范围更大。
使用场合
- 如果只是编码字符串,不和URL有半毛钱关系,那么用escape。
- 如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。
// 编码前
"http://www.cnblogs.com/season-huang/some other thing"
// encodeURI编码后
"http://www.cnblogs.com/season-huang/some%20other%20thing"
// encodeURIComponent编码后
"http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing"
注意:encodeURI编码后,空格也会被编码;encodeURIComponent编码后,连协议后面的冒号和双斜杠也会被编码。这时候,url已经没法用了。
- 当你需要编码URL中的参数的时候,那么encodeURIComponent是最好方法。
var param = "http://www.cnblogs.com/season-huang/"; //param为参数
param = encodeURIComponent(param);
var url = "http://www.cnblogs.com?next=" + param;
console.log(url) ;
//"http://www.cnblogs.com?next=http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2F"
带在参数后的url地址,必须要用encodeURIComponent来编码。
网友评论