raatools/

Encodeur / Décodeur d'URL

Encodez ou décodez des URL et chaînes de requête.

Qu'est-ce que l'encodage URL ?

L'encodage URL (aussi appelé percent-encoding) est le mécanisme permettant de convertir les caractères interdits dans une URL en un format hexadécimal sûr. Chaque caractère non autorisé est remplacé par un signe pourcentage suivi de deux chiffres hexadécimaux représentant son code ASCII. Par exemple, une espace devient %20, une esperluette devient %26 et un dièse devient %23.

Les URL ne peuvent contenir qu'un ensemble limité de caractères défini par la RFC 3986 : lettres (A–Z, a–z), chiffres (0–9) et quelques caractères spéciaux (- _ . ~ ! * ' ( )). Tout autre caractère — y compris les espaces, les lettres non ASCII et les caractères réservés comme & = ? # — doit être encodé en pourcentage avant d'être inclus dans une URL.

Quand faut-il encoder une URL ?

  • Transmettre des caractères spéciaux dans les paramètres de chaîne de requête (par exemple ?q=hello%20world).
  • Encoder des données de formulaire envoyées via HTTP POST avec le type de contenu application/x-www-form-urlencoded.
  • Construction programmatique d'URLs de requête API à partir d'entrées fournies par l'utilisateur.
  • Imbrication d'URL dans d'autres URL (par exemple, paramètres de redirection).
  • Inclure des caractères Unicode (lettres accentuées, emoji, caractères CJK) dans des URL.

Encoder ou décoder

L'encodage convertit du texte brut en chaîne compatible URL en remplaçant les caractères non sûrs par leurs équivalents encodés en pourcentage. Le décodage effectue l'opération inverse et reconvertit les séquences encodées en leurs caractères d'origine. Cet outil vous permet de basculer entre encodage et décodage en un seul clic.

Comment utiliser cet outil

Collez ou saisissez du texte dans le champ d'entrée. Sélectionnez le mode encodage ou décodage. La sortie se met à jour instantanément. Cliquez sur le bouton d'inversion pour inverser le sens, en utilisant la sortie actuelle comme nouvelle entrée. Utile quand vous devez encoder une chaîne puis vérifier le résultat en la décodant en retour.

Caractères concernés par l'encodage

Cet outil utilise la fonction encodeURIComponent() de JavaScript, qui encode tous les caractères sauf : A–Z, a–z, 0–9 et les caractères non réservés - _ . ! ~ * ' ( ). C'est l'encodage correct pour les valeurs de paramètres de requête et les données de formulaire. La fonction similaire encodeURI() est moins agressive et préserve les caractères comme : / ? # qui ont une signification dans la structure d'une URL.

Erreurs courantes d'encodage URL

L'erreur la plus courante est le double encodage — encoder une chaîne déjà encodée, transformant %20 en %2520. Cela casse les URL et déroute les serveurs. Vérifiez toujours si votre saisie est déjà encodée avant d'appliquer un encodage. Une autre erreur consiste à utiliser encodeURI() là où encodeURIComponent() est nécessaire, ce qui laisse & et = non encodés dans les valeurs de paramètres.

Ne pas encoder les entrées utilisateur avant de les insérer dans des URL constitue une vulnérabilité de sécurité. Une entrée non encodée peut injecter des paramètres supplémentaires, casser l'analyse de l'URL ou ouvrir la voie à des attaques par injection. Encodez toujours les valeurs fournies par l'utilisateur lorsque vous construisez des URL par programmation.

Conseils pratiques

En développement web, la plupart des frameworks gèrent automatiquement l'encodage des URL dans les soumissions de formulaires et les bibliothèques client HTTP. L'encodage manuel n'est généralement nécessaire que lorsqu'on construit dynamiquement des URL en JavaScript, lorsqu'on transmet des données dans des fragments d'URL, ou lorsqu'on déboggue des appels d'API contenant des caractères spéciaux.

Questions fréquentes

Quelle est la différence entre %20 et + pour les espaces ?

Les deux représentent des espaces, mais dans des contextes différents. %20 est l'encodage URL standard pour les espaces et fonctionne partout. Le signe + ne représente les espaces que dans les chaînes de requête au format application/x-www-form-urlencoded (les soumissions de formulaires HTML). En cas de doute, utilisez %20.

Faut-il encoder les caractères UTF-8 ?

Oui. Les caractères non-ASCII (lettres accentuées, emoji, caractères chinois, etc.) doivent d'abord être encodés en UTF-8, puis percent-encodés pour pouvoir figurer dans une URL. La fonction encodeURIComponent() de JavaScript gère les deux étapes automatiquement, convertissant par exemple le caractère é en %C3%A9.