Ce que fait cet outil
Le texte devient des octets UTF-8, et chaque octet hors de l’ensemble non réservé s’écrit avec un signe pourcent suivi de deux chiffres hexadécimaux. Ce qui passe intact : les lettres, les chiffres, et - . _ ~.
Tout le reste est échappé, y compris les caractères qui structurent une URL :
a b → a%20b
a+b&c=d → a%2Bb%26c%3Dd
café → caf%C3%A9
😀 → %F0%9F%98%80
Encodage pourcent, pas encodage de formulaire
C’est la distinction à retenir, parce qu’elle corrompt des données en silence dans les deux sens.
L’encodage pourcent est celui d’un chemin d’URL et d’une chaîne de requête moderne. Une espace s’y écrit %20. Un signe plus y est un vrai plus, et se trouve lui-même échappé en %2B quand il apparaît dans une valeur.
L’encodage de formulaire — application/x-www-form-urlencoded, ce qu’envoie un formulaire HTML — écrit l’espace + à la place. C’est la convention plus ancienne, et elle est encore partout.
Cet outil applique la première règle, comme le font encodeURIComponent et decodeURIComponent dans un navigateur.
La conséquence au décodage
Une chaîne venue d’un formulaire, ou d’une chaîne de requête écrite dans ce style, gardera ici ses signes plus au lieu de les retransformer en espaces. a+b se décode en a+b.
C’est correct pour l’encodage pourcent, et faux par rapport à ce que vous vouliez probablement. Si l’entrée vient d’un formulaire, remplacez + par %20 avant de décoder, ou utilisez un décodeur de formulaire.
Un signe pourcent isolé, non suivi de deux chiffres hexadécimaux, lève une erreur plutôt qu’une supposition : 100% ne peut pas être décodé, et prétendre le contraire inventerait un octet.
Il encode une valeur, pas une URL
Donnez-lui une URL entière et il échappera aussi le :// et les séparateurs, ce qui n’est pas le but. Encodez chaque valeur séparément, puis assemblez l’URL autour.
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.