alert(encodeURIComponent("A&T Plastic")); //A%26T%20Plastic alert(escape("A&T Plastic")); //A%26T%20Plastic alert(encodeURI("A&T Plastic")); //A&T%20Plastic alert(escape("A&T Plastic中")); //A%26T%20Plastic%uFFFD%uFFFD
我们看到 encodeURI 没有编码uri的保留字符 & ,'中'被编码成了 %uFFFD%uFFFD
encodeURIComponent 就编码了保留字符& 。
url的编码经常会被利用在XSS攻击中来绕过服务端的 xss filter, 对有威胁的url进行伪装,让不明用户去点击。
所以如果只是处理 get 提交时url地址中的乱码问题,可以使用 encodeURI 来编码整个url;
如果参数中含有保留字符需要进行编码,那么应该使用 encodeURIComponent 来编码部分参数;
如果使用encodeURIComponent来处理中文乱码,那么前端需要使用两次encodeURIComponent(encodeURIComponent('你好')),Java后端使用:
java.Net.URLDecoder.decode(param,"UTF-8");
来解码;
参考:
https://www.jb51.net/article/22880.htm
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章: