Comprendre l'encodage d'URL et le percent-encoding
Ce que fait cet outil
Une URL ne peut transporter en toute sécurité qu'un ensemble limité de caractères. Tout ce qui sort des lettres, chiffres et quelques symboles non réservés doit être réécrit en percent-encoding : un signe % suivi de la valeur de l'octet en hexadécimal. Cet outil transforme du texte ordinaire en cette forme encodée et effectue aussi l'opération inverse, en rendant des séquences comme %20 et %26 aux caractères qu'elles représentent.
Trois modes d'encodage couvrent les cas réels. L'encodage standard reproduit encodeURI de JavaScript et vise une URL complète : les caractères structurants comme :, /, ? et # restent intacts. L'encodage de composant reproduit encodeURIComponent et échappe aussi ces caractères structurants, ce qu'il faut pour un fragment isolé tel que la valeur d'un paramètre. L'encodage de formulaire suit la règle application/x-www-form-urlencoded utilisée par le navigateur lorsqu'il envoie un formulaire.
Quand l'utiliser
Optez pour l'encodage de composant dès qu'une valeur s'insère dans une chaîne de requête : un terme de recherche, une adresse e-mail ou une cible de redirection contenant elle-même ?, & ou =. L'encoder empêche ces symboles d'être lus comme la structure de l'URL et de casser le lien. L'encodage standard convient à une adresse complète que vous nettoyez, où des espaces ou des lettres accentuées se sont glissés mais où les barres obliques et le point d'interrogation doivent garder leur sens. L'encodage de formulaire correspond au corps d'une requête POST ou à une charge de formulaire construite à la main, où les espaces s'écrivent + plutôt que %20. Le décodage est tout aussi fréquent : coller un lien encodé issu d'un journal, d'un rapport d'analytique ou d'une chaîne de redirections et lire vers quoi il pointe réellement.
Un exemple concret
Prenons le texte hello world & café. En encodage de composant, un espace devient %20, l'esperluette devient %26 et café — puisque é est stocké sur deux octets UTF-8 — devient caf%C3%A9. En encodage de formulaire, ce même espace s'écrit +, ce qui donne hello+world. Les statistiques en direct indiquent combien de caractères ont changé et quelle part de la chaîne a été encodée, un moyen rapide de repérer un texte déjà encodé une fois.
Remarques et cas particuliers
Les caractères réservés (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) ont un sens à l'intérieur d'une URL : le mode standard les laisse donc volontairement tels quels tandis que le mode composant les échappe ; choisir le mauvais mode est la cause habituelle d'un paramètre de requête cassé. L'encodage est défini sur des octets UTF-8, si bien que tout caractère non ASCII se déploie en plusieurs groupes %XX. Évitez d'encoder une URL deux fois : un % isolé faisant déjà partie d'une séquence d'échappement devient %25 et le lien cesse de fonctionner. En cas de doute, décodez d'abord pour vérifier si le texte est brut ou déjà échappé.