Avatar ·

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