如何在JavaScript中正确编码URL?encodeURI vs encodeURIComponent
大家好!我是JavaScript新手,在处理URL时遇到了问题。我需要向服务器发送一个包含特殊字符和西里尔字母参数的请求。例如,我有一个搜索字符串:"кофе & чай / рецепты?"。
我尝试使用 `encodeURI()`,但注意到有些字符没有被编码。后来我找到了 `encodeURIComponent()`,但现在不明白什么时候该用哪个方法。
以下是我的代码示例,它没有按预期工作:
```javascript
const baseUrl = "https://api.example.com/search";
const query = "кофе & чай / рецепты?";
const fullUrl = baseUrl + "?q=" + encodeURI(query);
console.log(fullUrl);
// 结果:https://api.example.com/search?q=%D0%BA%D0%BE%D1%84%D0%B5%20&%20%D1%87%D0%B0%D0%B9%20/%20%D1%80%D0%B5%D1%86%D0%B5%D0%BF%D1%82%D1%8B?
// 可以看到 & 和 ? 仍然没有被编码
```
我尝试使用 `encodeURIComponent`:
```javascript
const encodedQuery = encodeURIComponent(query);
console.log(encodedQu