Pourquoi les URL ont besoin d'encodage
Une URL ne peut contenir qu'un ensemble limite de caracteres ASCII. Tout le reste — espaces, trémas, emoji, et les caracteres a signification speciale comme &, = et ? — doit etre encode en pourcent : chaque octet de la representation UTF-8 du caractere devient % suivi de deux chiffres hexadecimaux. Sautez cette etape et une requete de recherche comme coffee & cream casse silencieusement votre chaine de requete : le & demarre un nouveau parametre et la moitie de votre valeur disparait.
Cet outil utilise encodeURIComponent, la variante stricte destinee aux parties individuelles d'une URL. coffee & cream devient coffee%20%26%20cream, et le decodage l'inverse exactement.
Caracteres courants et leurs encodages
| Caractere | Encode | Pourquoi c'est important dans une URL |
|---|---|---|
| espace | %20 | Les espaces terminent l'URL dans de nombreux contextes |
& | %26 | Separe les parametres de requete |
= | %3D | Separe le nom et la valeur d'un parametre |
? | %3F | Demarre la chaine de requete |
# | %23 | Demarre le fragment — tout ce qui suit est retire des requetes |
/ | %2F | Separateur de segment de chemin |
+ | %2B | Decode comme un espace dans les donnees de formulaire s'il reste brut |
ü | %C3%BC | Non-ASCII — deux octets en UTF-8, deux sequences %- |
encodeURI vs. encodeURIComponent
JavaScript livre deux encodeurs, et les confondre est un bug classique. encodeURI est pour une URL complete : il laisse :, /, ?, # et & intacts pour que la structure de l'URL survive. encodeURIComponent — ce qu'utilise cet outil — est pour une valeur unique a l'interieur d'une URL et encode tous ces caracteres. Regle empirique : vous construisez un parametre de requete ? Toujours encodeURIComponent. Vous encodez une URL entiere qu'on a tapee ? encodeURI. Si vous encodez une URL complete avec la variante component, le https%3A%2F%2F en tete vous indique ce qui a mal tourne.
Pieges a connaitre
- Double encodage : encoder deux fois transforme
%20en%2520. Si vous voyez des sequences%25dans la nature, quelque chose a encode un texte deja encode. - Decoder une entree invalide : un
%isole non suivi de deux chiffres hexadecimaux (comme100% legit) echoue au decodage — l'outil le signale au lieu de deviner. - + n'est pas toujours un espace : uniquement dans les donnees de formulaire
application/x-www-form-urlencoded.decodeURIComponentlaisse correctement+comme+.
Tout tourne entierement dans votre navigateur — aucune URL que vous collez n'est jamais envoyee a un serveur. Outils connexes : echappez du texte pour du balisage avec l'encodeur HTML, ou construisez des chemins d'URL propres avec le generateur de slug.