Ce que fait cet outil
Chaque séquence %XX devient l’octet que ces deux chiffres désignent, et les octets obtenus sont lus comme du texte UTF-8. caf%C3%A9 donne café, la lettre accentuée faisant deux octets.
Majuscules et minuscules hexadécimales fonctionnent toutes deux.
Le signe plus est le point à connaître
Un plus reste un plus. C’est correct — et ce n’est probablement pas ce que vous attendiez, d’où l’intérêt d’être précis sur la raison.
Deux encodages se ressemblent et divergent sur exactement un caractère :
- l’encodage pourcent, celui d’un chemin d’URL et d’une chaîne de requête moderne, écrit l’espace
%20et traite+comme un vrai plus ; - l’encodage de formulaire (
application/x-www-form-urlencoded), ce qu’envoie un formulaire HTML, écrit l’espace+.
Cet outil applique le premier, comme decodeURIComponent dans un navigateur.
Rien dans la chaîne ne dit lequel l’a produite. Un outil qui devinerait corromprait l’autre cas : un plus est un caractère légitime dans une adresse e-mail, un numéro de téléphone, un terme de recherche. Transformer chaque plus en espace détruirait ces valeurs aussi sûrement que les laisser intactes dérange les données de formulaire.
Si votre entrée vient d’un formulaire, remplacez donc + par %20 d’abord. Un rechercher-remplacer, et le résultat est juste.
Ce qu’il refuse
Un signe pourcent non suivi de deux chiffres hexadécimaux. 100% ne peut pas être décodé — il n’y a aucun octet à produire, et en inventer un serait pire qu’une erreur. La forme correctement encodée est 100%25.
Une séquence %XX qui ne forme pas de l’UTF-8 valide est également refusée plutôt que remplacée par un caractère de substitution : vous apprenez ainsi que l’entrée est abîmée, au lieu de lire un texte qui n’a jamais existé.
Confidentiel par conception
Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.