Ce qu’est l’encodage d’URL
Une adresse web ne peut contenir qu’un petit ensemble de caractères : lettres, chiffres et quelques symboles comme -, ., _ et ~. D’autres caractères ont un rôle spécial. ? commence la chaîne de requête, & sépare les paramètres, = relie un nom à une valeur et # commence un fragment. Les espaces et les lettres hors de l’alphabet anglais, comme les lettres accentuées du français, ne sont pas autorisés du tout.
L’encodage d’URL, aussi appelé encodage pourcent, règle ce problème. Chaque caractère interdit est converti en octets UTF-8, et chaque octet s’écrit % suivi de deux chiffres hexadécimaux. Une espace devient %20, & devient %26 et é devient %C3%A9.
Comment utiliser l’encodeur d’URL
Encoder. Tapez ou collez un texte dans Texte brut. La version encodée apparaît dans URL encodée. Appuyez sur Copier pour la récupérer.
Décoder. Collez un texte encodé dans URL encodée. Le texte lisible apparaît à gauche.
Choisissez ce que vous encodez avec le menu sous les zones :
- Une valeur ou une partie d’URL (encodeURIComponent) est le bon choix la plupart du temps. Il encode tout sauf les lettres, les chiffres et
- _ . ~. Utilisez-le pour les termes de recherche, les valeurs de paramètres et les segments de chemin. - Une URL complète, garder : / ? & = (encodeURI) laisse intacte la structure de l’adresse et n’encode que les espaces, les lettres non anglaises et les caractères du même genre.
- Données de formulaire, espaces en + (x-www-form-urlencoded) correspond à ce qu’envoie un navigateur quand vous validez un formulaire HTML. Les espaces deviennent
+, et au décodage,+redevient une espace.
Effacer vide les deux zones.
Comment ça marche
Le texte est d’abord transformé en octets UTF-8. Chaque octet non autorisé est remplacé par % et sa valeur hexadécimale. La lettre é occupe deux octets en UTF-8, elle devient donc deux séquences : %C3%A9. Un emoji occupe quatre octets, il devient quatre séquences.
En mode composant, cet outil va un peu plus loin que la fonction de base du navigateur. Il encode aussi ! ' ( ) *, selon la RFC 3986. Ces caractères sont techniquement autorisés, mais ont posé problème à certains serveurs et clients e-mail. Pour le français, c’est utile : l’apostrophe de « l’été » est encodée en %27.
Le décodage fonctionne à l’inverse. Les suites de séquences %XX sont rassemblées en octets et lues en UTF-8.
Exemples
| Saisie | Composant | URL complète | Formulaire |
|---|---|---|---|
hello world |
hello%20world |
hello%20world |
hello+world |
Tom & Jerry |
Tom%20%26%20Jerry |
Tom%20&%20Jerry |
Tom+%26+Jerry |
a+b=c |
a%2Bb%3Dc |
a+b=c |
a%2Bb%3Dc |
50% off |
50%25%20off |
50%25%20off |
50%25+off |
café |
caf%C3%A9 |
caf%C3%A9 |
caf%C3%A9 |
it's (ok)*! |
it%27s%20%28ok%29%2A%21 |
it's%20(ok)*! |
it%27s+%28ok%29%2A%21 |
Crème brûlée & café |
Cr%C3%A8me%20br%C3%BBl%C3%A9e%20%26%20caf%C3%A9 |
Cr%C3%A8me%20br%C3%BBl%C3%A9e%20&%20caf%C3%A9 |
Cr%C3%A8me+br%C3%BBl%C3%A9e+%26+caf%C3%A9 |
Une adresse complète montre le mieux la différence. https://example.com/a b?q=1&r=é en mode URL complète devient https://example.com/a%20b?q=1&r=%C3%A9, qui fonctionne toujours comme lien. En mode composant, le même texte devient https%3A%2F%2Fexample.com%2Fa%20b%3Fq%3D1%26r%3D%C3%A9, ce qui n’est correct que si toute l’adresse est elle-même la valeur d’un paramètre, comme une cible de redirection.
Un exemple français en mode URL complète : https://exemple.fr/recherche?q=élève devient https://exemple.fr/recherche?q=%C3%A9l%C3%A8ve. Les navigateurs affichent souvent l’adresse avec les accents dans la barre d’adresse, mais c’est bien cette forme encodée qui circule.
Conseils et limites
- Encodez les valeurs, pas les liens entiers. Construisez d’abord le lien, puis encodez seulement les morceaux que vous insérez.
- Attention au double encodage. Si vous voyez
%2520, le texte a été encodé deux fois. Décodez-le une fois. - Le + n’est pas toujours une espace. Il ne signifie espace que dans les données de formulaire. Dans un chemin,
+est un simple signe plus. Choisissez le mode correspondant avant de décoder. - Encoder n’est pas cacher. N’importe qui peut lire un texte encodé. Ne mettez pas de mots de passe dans les liens.
- La casse ne compte pas dans les séquences.
%c3%a9et%C3%A9veulent dire la même chose. Les majuscules sont l’usage courant. - Pour une URL lisible, plutôt que d’encoder des accents dans un chemin, retirez-les : le générateur de slug transforme « Été à Noël » en
ete-a-noel.
Autres méthodes
JavaScript. encodeURIComponent('Tom & Jerry') renvoie Tom%20%26%20Jerry. Utilisez decodeURIComponent pour l’inverse. Notez qu’il lève une erreur sur une séquence cassée comme %zz, alors que cet outil la laisse en place.
Python. urllib.parse.quote('Tom & Jerry', safe='') renvoie Tom%20%26%20Jerry, et urllib.parse.quote_plus renvoie Tom+%26+Jerry.
Excel. =URLENCODAGE(A1) dans Excel en français (=ENCODEURL(A1) en anglais) encode en pourcent le texte de la cellule A1 (Excel 2013 et versions suivantes sous Windows).
Ligne de commande. curl --data-urlencode "q=Tom & Jerry" encode une valeur de formulaire au moment de l’envoyer.
Outils associés
Vous créez des liens de campagne ? Le générateur UTM encode chaque balise pour vous. Pour transformer un titre en chemin propre, utilisez le générateur de slug. Pour des données binaires dans une URL, l’encodage Base64 avec l’option sûre pour les URL convient souvent mieux.