var test1="http://www.w3school.com.cn/My first/?uname=aa&&pwd=123456";
console.log(encodeURI(test1));
console.log(encodeURIComponent(test1));
var test2="http://www.w3school.com.cn/My first/#qpp";
console.log(encodeURI(test2));
console.log(encodeURIComponent(test2));
一、区别:
encodeURI是对url中的查询字符串部分进行转义
encodeURIComponent对整个url进行转义,包括空格、英文冒号、斜杠等
至于decodeURI和decodeURIComponent,只要知道decodeURI和encodeURI是互逆操作,decodeURIComponent和encodeURIComponent是互逆操作就可以了
二、应用:
1.如果是简单的http地址,如 http://www.w3school.com.cn/My first/?uname=张三&pwd=123456,使用encodeURI编码就行,这样浏览器拿到编码(utf8)后的地址就能正常打开页面(现在大多数浏览器都会自动进行编码,ie11还不行)
2.如果是比较复杂的http地址,如 http://www.w3school.com.cn/My first/?newUrl=http地址
需要通过url传地址,然后跳转到新的地址,那这个要传递的地址(http地址)需要使用encodeURIComponent进行编码
三、参考链接:
https://www.cnblogs.com/shuiyi/p/5277233.html
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent