js encodeURI 和 encodeURIComponent 的區別


一、共同點

  1. 把字符串作為 URI 進行編碼

  2. 方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。

二、區別

1.encodeURI(URIstring): 

  對在 URI 中具有特殊含義的 ASCII 標點符號,不會進行轉義的:;/?:@&=+$,#

console.log(encodeURI("http://www.baidu.com.cn"));//http://www.baidu.com.cn
console.log(encodeURI("http://www.baidu.com.cn/p 1/"));//http://www.baidu.com.cn/p%201/
console.log(encodeURI(",/?:@&=+$#"));//,/?:@&=+$#

2.encodeURIComponent(URIstring)

  對在 URI 中具有特殊含義的 ASCII 標點符號,也會進行轉義的:;/?:@&=+$,#

console.log(encodeURIComponent("http://www.baidu.com.cn"));//http%3A%2F%2Fwww.baidu.com.cn
console.log(encodeURIComponent("http://www.baidu.com.cn/p 1/"));//http%3A%2F%2Fwww.baidu.com.cn%2Fp%201%2F
console.log(encodeURIComponent(",/?:@&=+$#"));//%2C%2F%3F%3A%40%26%3D%2B%24%23

 

三、解決url傳遞解析不正確的問題

  1. 中文

  2. 參數比較復雜

  var req=encodeURIComponent(`{"query":{"discoverId":${this.curDiscoverId}},"page":{"pageSize":20,"pageNo":${curPage}}}`);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM