JavaScript是前端開發(fā)領域中不可或缺的一項技能。而JavaScript中由于各種奇怪的字符的存在,URL也就常常需要進行編碼。這時就需要了解一下JavaScript中的encodeURL()方法。
一個例子
const url = "https://www.example.com/?keyword=JavaScript/ES6"; console.log(encodeURI(url)); console.log(encodeURIComponent(str));
encodeURI()方法會對除了特殊字符以外的其他字符進行編碼,也就是僅對ASCII碼表中英文字母、數字、以及一些特殊字符不進行編碼(!、@、#等)。而encodeURIComponent()方法會對所有非標準字符進行編碼。比如問號“?”、#、&等。注意,這兩種方法編碼的結果是不一樣的,因此需要根據具體情況進行選擇使用。
更加詳細的解釋
const uri = "https://www.example.com/文件路徑/空格&字符.html"; console.log(encodeURI(uri)); // 輸出 "https://www.example.com/%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84/%E7%A9%BA%E6%A0%BC&%E5%AD%97%E7%AC%A6.html" console.log(encodeURIComponent(uri)); // 輸出 "https%3A%2F%2Fwww.example.com%2F%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84%2F%E7%A9%BA%E6%A0%BC%26%E5%AD%97%E7%AC%A6.html"
另外,當使用encodeURI()方法進行編碼時,不會對“/”、“?”、“#”等字符進行編碼。然而,在使用encodeURIComponent()方法時,這些字符都會進行編碼。
尤其在使用ajax進行post請求時,需要先進行encodeURIComponent(),這樣可以避免在傳輸過程中引發(fā)錯誤。
總結:如果需要編碼的URI中包含特殊字符,使用encodeURIComponent()方法。否則,使用encodeURI()方法即可。