Avatar ·

如何在JavaScript中正确编码URL?encodeURI、encodeURIComponent和escape的区别

大家好!我是JavaScript新手,在处理URL时遇到了问题。我需要向服务器发送一个GET请求,参数中包含特殊字符,例如空格、西里尔字母或问号。 以下是我的代码示例: ```javascript let baseUrl = "https://api.example.com/search"; let query = "JavaScript & HTML/CSS уроки"; let fullUrl = baseUrl + "?q=" + query; fetch(fullUrl) .then(response => response.json()) .then(data => console.log(data)); ``` 这段代码无法工作,因为URL中有空格和`&`符号。我搜索了一下,找到了三个函数:`escape()`、`encodeURI()`和`encodeURIComponent()`。但我很困惑——哪一个才是正确的?当我使用`escape()`时,似乎能工作,但我听说它已经过时了。而`encodeURI()`不会编码所有内容,`encodeURIComponent()`甚至连斜杠都会编码。 请告诉我,如何在JavaScript中正确编码URL?在什么情况下使用这些函数?如果遇到问题该怎么办?