Comment encoder correctement une URL en JavaScript ? Différence entre encodeURI, encodeURIComponent et escape
Bonjour à tous ! Je suis débutant en JavaScript et j'ai rencontré un problème en travaillant avec des URL. Je dois envoyer une requête GET à un serveur avec des paramètres contenant des caractères spéciaux, par exemple des espaces, du cyrillique ou des points d'interrogation.
Voici un exemple de mon code :
```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));
```
Ce code ne fonctionne pas car l'URL contient des espaces et le symbole `&`. J'ai cherché sur Google et j'ai trouvé trois fonctions : `escape()`, `encodeURI()` et `encodeURIComponent()`. Mais je suis confus — laquelle est correcte ? Quand j'utilise `escape()`, cela semble fonctionner, mais j'ai entendu dire qu'elle est obsolète. Et `encodeURI()` n'encode pas tout, tandis que `encodeURIComponent()` encode même les slashes.
Pouvez-vous me dire, s'il vous plaît, comment encoder correctement une URL en JavaScript ? Dans quels cas utiliser chacune de ces fonctions ? Et que faire si