Pourquoi les URLs ont besoin d'être encodées
Une URL ne peut contenir qu'un ensemble limité de caractères ASCII. Les espaces, les caractères accentués (é, ü, ñ), les scripts non-latins (arabe, chinois, japonais) et la ponctuation réservée ont une signification spéciale ou sont interdits dans les URLs tels quels. L'encodage pourcent convertit les caractères non sûrs : chaque caractère est remplacé par un `%` suivi de deux chiffres hexadécimaux.
Sans encodage, une URL comme `https://example.com/recherche?q=café au lait` se casserait. Correctement encodée : `https://example.com/recherche?q=caf%C3%A9%20au%20lait`.
encodeURI vs encodeURIComponent
`encodeURI()` encode une URL complète, préservant les caractères qui ont une signification structurelle dans une URL. Utilisez ceci quand vous avez une URL complète et voulez seulement la rendre sûre pour la transmission.
`encodeURIComponent()` est plus agressif — il encode tout sauf les lettres, chiffres et quelques caractères spéciaux. Utilisez-le pour les valeurs individuelles de paramètres de requête ou les segments de chemin.
Pièges courants de l'encodage
Double-encodage : encoder une chaîne déjà encodée produit `%2520` au lieu de `%20`. Décodez toujours d'abord, puis ré-encodez si nécessaire. Plus vs espace : dans les chaînes de requête, `+` représente parfois un espace. Dans les chemins URL, les espaces doivent toujours être `%20`.