一、共同點
-
把字符串作為 URI 進行編碼
-
方法不會對 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傳遞解析不正確的問題
-
中文
-
參數比較復雜
var req=encodeURIComponent(`{"query":{"discoverId":${this.curDiscoverId}},"page":{"pageSize":20,"pageNo":${curPage}}}`);