Les URL n’acceptent qu’un ensemble limité de caractères ASCII. Tout le reste — espaces, accents, émojis et séparateurs réservés qui structurent une URL — doit être encodé en pourcentage. Cet outil encode et décode cette représentation entièrement dans votre navigateur. Ce guide explique quand choisir l’encodage d’un composant ou d’une URL complète, pourquoi un espace est parfois représenté par + et parfois par %20, et comment interpréter une erreur de décodage.
Quand utiliser encodeURIComponent ou encodeURI ?
Les deux fonctions diffèrent uniquement par les caractères qu’elles protègent. encodeURIComponent échappe tout sauf les caractères non réservés (lettres, chiffres et - _ . ! ~ * ' ( )). Les séparateurs réservés comme / ? & = # deviennent donc %2F %3F %26 %3D %23. C’est exactement ce qu’il faut pour une seule donnée — une valeur de requête ou un segment de chemin — car cela garantit que la valeur ne sera pas interprétée comme un élément de structure.
encodeURI est conçu pour une URL complète. Il laisse intacts les caractères réservés qui délimitent l’URL ; https://x.com/a?b=c reste donc utilisable. En contrepartie, il ne protège pas une valeur qui contient elle-même une barre oblique / ou une esperluette &. En pratique, encodez d’abord chaque valeur en mode Composant, puis assemblez l’URL. N’utilisez le mode URL complète que pour une URL déjà construite qui contient simplement un espace ou un accent à échapper.
Caractères réservés et confusion entre + et %20
La RFC 3986 appelle « réservés » les caractères suivants : : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Dans les données, ils doivent être échappés ; comme délimiteurs, ils doivent rester intacts. L’espace est la source d’erreur la plus fréquente. L’encodage moderne en pourcentage le représente toujours par %20. En revanche, l’ancien format application/x-www-form-urlencoded — utilisé par les navigateurs lors de l’envoi d’un formulaire HTML — représente un espace de la chaîne de requête par +. Ainsi, ?q=a+b et ?q=a%20b peuvent tous deux signifier « a b ». Pour décoder une chaîne de formulaire, activez Traiter + comme un espace. Pour un chemin ou une URL d’API moderne, laissez l’option désactivée afin qu’un + littéral reste un +.
Pourquoi le décodage échoue et comment éviter le double encodage
Le décodage renvoie l’erreur URI mal formée lorsqu’un signe % n’est pas suivi exactement de deux chiffres hexadécimaux (0–9 A–F). Un signe % littéral dans le texte d’origine, comme 50% off, en est la cause habituelle. Il ne faut pas encoder toute la chaîne sous la forme %2520… non : pour « 50% off », il faut 50%25 off, où %25 représente le signe pourcentage. L’outil indique la position de la première séquence incorrecte afin que vous puissiez la repérer. L’autre risque est le double encodage : si vous encodez un texte qui contient déjà des séquences %XX, les signes pourcentage sont eux-mêmes échappés et %20 devient %2520. L’outil détecte les entrées déjà encodées et vous avertit qu’il faut les décoder plutôt que les encoder de nouveau.
Confidentialité : toutes les opérations s’effectuent localement avec les fonctions natives du navigateur encodeURIComponent, encodeURI, decodeURIComponent et decodeURI. Rien de ce que vous collez — jetons, chaînes de requête ou données personnelles — n’est envoyé à un serveur.