Mode d’emploi
- 1Choisissez Encoder ou Décoder, puis saisissez ou collez votre texte : le résultat se met à jour pendant la saisie.
- 2Pour encoder, choisissez le bon type : Composant pour une seule valeur, comme un terme de recherche, URL complète pour une adresse entière, ou Données de formulaire pour écrire les espaces sous la forme
+. - 3Pour décoder une chaîne de requête ou des données de formulaire, activez « Interpréter + comme un espace ». Si le texte contient une séquence d’échappement incorrecte, l’outil indique exactement où elle se trouve.
- 4Pour inspecter un lien, collez-le dans « Analyser une URL » afin de voir son hôte, son port, son chemin, son fragment et chaque paramètre de requête, décodé.
Qu’est-ce que l’encodage d’URL ?
Une URL ne peut contenir qu’un ensemble restreint de caractères ASCII. Tout le reste (espaces, lettres accentuées, emoji et caractères ayant une signification particulière, comme &, =, ? ou #) doit être encodé en pourcent : chaque octet de la forme UTF-8 du caractère s’écrit % suivi de deux chiffres hexadécimaux. Un espace devient %20, é devient %C3%A9 et € devient %E2%82%AC.
L’encodage évite que des données soient confondues avec la structure de l’URL. Si un terme de recherche contient & et que vous le laissez tel quel, le serveur coupe le terme en deux paramètres ; écrit %26, il reste dans la valeur.
Composant, URL complète ou données de formulaire ?
L’encodage de composant, encodeURIComponent en JavaScript, encode tout sauf les lettres, les chiffres et - _ . ! ~ * ' ( ). Utilisez-le pour chaque élément que vous insérez dans une URL : une valeur de paramètre, un segment de chemin, une cible de redirection.
L’encodage d’URL complète, encodeURI, laisse intacts les caractères qui structurent une URL, comme : / ? # & =, et n’encode que les espaces, les caractères non ASCII et les symboles à risque. Utilisez-le pour une URL entière déjà correctement construite, jamais pour des valeurs isolées.
L’encodage de formulaire (application/x-www-form-urlencoded) est ce qu’envoient les navigateurs quand vous soumettez un formulaire HTML, et ce que produit URLSearchParams. Il fonctionne comme l’encodage de composant, sauf que les espaces deviennent +. C’est pourquoi + signifie un espace dans la plupart des chaînes de requête, et pourquoi un vrai signe plus doit s’écrire %2B.
Pourquoi le décodage peut échouer
Un % doit toujours être suivi de deux chiffres hexadécimaux. Un texte comme 100% sûr n’est pas un encodage pourcent valide : le signe pourcentage lui-même aurait dû s’écrire %25.
Les octets derrière les séquences d’échappement doivent aussi former de l’UTF-8 valide. caf%E9 est la façon dont d’anciens systèmes encodaient « café » en Windows-1252 ou ISO-8859-1 ; en UTF-8, é s’écrit %C3%A9. Le décodeur signale la séquence exacte qui pose problème : vous voyez ainsi si le texte a été tronqué ou encodé avec un autre jeu de caractères.
Questions fréquentes
Que signifie %20 dans une URL ?
%20 est un espace encodé. Les espaces ne sont pas autorisés dans les URL : on les écrit donc %20, ou + dans les chaînes de requête et les données de formulaire. Les deux se décodent en un espace ordinaire.
Faut-il encoder les espaces en %20 ou en + ?
Dans le chemin, utilisez toujours %20. Dans la chaîne de requête, les deux fonctionnent en pratique, car les serveurs décodent les données de formulaire en traitant + comme un espace. %20 fonctionne partout, alors que + ne signifie un espace que dans les chaînes de requête et les corps de formulaire.
Quelle est la différence entre encodeURI et encodeURIComponent ?
encodeURIComponent encode aussi les caractères réservés comme / ? & = # : c’est donc le bon choix pour des valeurs individuelles. encodeURI les laisse tels quels pour qu’une URL complète continue de fonctionner. Utiliser encodeURI sur une valeur de paramètre est un bug courant : un & présent dans la valeur la coupe alors en deux paramètres.
Pourquoi ai-je une erreur « URI malformed » ?
La fonction decodeURIComponent de JavaScript la déclenche quand un % n’est pas suivi de deux chiffres hexadécimaux, ou quand les octets encodés ne forment pas de l’UTF-8 valide. Collez le texte dans le décodeur ci-dessus : il indique quelle séquence provoque l’erreur et à quelle position.
Quels caractères n’ont pas besoin d’être encodés dans une URL ?
Les lettres A–Z et a–z, les chiffres 0–9 et - . _ ~ n’ont jamais besoin d’être encodés. Les caractères réservés comme : / ? # [ ] @ ! $ & ' ( ) * + , ; = sont autorisés là où ils ont leur signification particulière, mais doivent être encodés lorsqu’ils font partie des données.