Encodeur de composants URI

Si vous avez déjà passé une valeur comme name=John & Jane dans une URL sans l’encoder, vous connaissez le problème : le & est interprété comme un nouveau paramètre et le serveur reçoit des données corrompues. Cet outil encode par pourcentage toute chaîne pour un usage sûr comme composant URI selon la RFC 3986, en transformant chaque caractère réservé en une paire %HH (espaces compris). Collez un fragment, une valeur de requête ou une cible de redirection et récupérez quelque chose de sûr à concaténer dans n’importe quelle URL.

Comment encoder un composant URI

  1. 1

    Collez votre valeur

    Insérez une seule valeur de paramètre de requête, un segment de chemin ou une chaîne de fragment.

  2. 2

    Choisissez encoder ou décoder

    Changez de sens pour transformer les échappements de pourcentage en caractères d'origine.

  3. 3

    Exécutez-le

    L'outil encode chaque caractère en UTF-8, puis remplace chaque octet réservé par %HH.

  4. 4

    Copiez le résultat

    Collez la sortie directement dans votre modèle d'URL ou votre client API.

Quels caractères sont échappés

Cet encodeur suit la RFC 3986 : seul l’ensemble non réservé reste intact, A-Z a-z 0-9 - _ . ~. Tout le reste devient de l’UTF-8 encodé en pourcentage, y compris l’espace et les sous-délimiteurs ! * ' ( ) que le encodeURIComponent de JavaScript laisserait tranquilles.

Caractère Encodé en
espace %20
! %21
# %23
& %26
' %27
( %28
) %29
* %2A
+ %2B
/ %2F
= %3D
? %3F
é %C3%A9

Composant vs URI complet

Cet encodeur est plus strict que encodeURI, qui laisse : / ? # [ ] @ ! $ & ' ( ) * + , ; = intacts car ces caractères sont structurels dans une URL. Pour une valeur que vous concaténez dans une chaîne de requête, vous voulez la forme stricte, et c’est exactement ce que produit cet outil : il échappe même ! ' ( ) *, allant un cran plus loin que le encodeURIComponent de JavaScript.

const url = `/search?q=${encodeURIComponent(userInput)}`;

Pièges courants

  • Double encodage : encoder quelque chose qui est déjà encodé vous donne %2520 au lieu de %20. Décodez toujours d’abord si vous n’êtes pas sûr de la source.
  • Signes plus dans les formulaires : la soumission de formulaires HTML encode les espaces en +, pas en %20. Les décodeurs qui suivent strictement la RFC 3986 (celui-ci compris) ne retransformeront pas + en espace. Utilisez un décodeur compatible avec l’encodage de formulaire pour ces cas.
  • Séparateurs de chemin : encoder / ici le transforme en %2F. Si vous voulez conserver une vraie structure de chemin, assemblez d’abord les segments et encodez chacun séparément.

Questions fréquentes

C’est un encodage par pourcentage selon la RFC 3986, la forme stricte. Il échappe :, /, ?, # et les autres caractères réservés (ainsi que !, ', (, ) et *) car un composant ne doit pas porter la structure d’URL à l’intérieur. Cela le rend plus strict que le encodeURIComponent de JavaScript et bien plus strict que encodeURI.

%20 est la méthode RFC 3986. + pour l’espace est un héritage de l’encodage du corps application/x-www-form-urlencoded. Pour les chaînes de requête dans les URL, %20 est toujours sûr ; + n’est attendu sur le serveur que lorsqu’il a été produit par un POST de formulaire.

Chaque caractère est d’abord encodé en UTF-8, puis chaque octet est échappé. Un caractère comme 日 devient %E6%97%A5 (trois octets).

Non. La valeur est encodée par pourcentage sur le serveur pour construire votre résultat et n’est ni stockée ni journalisée ; rien de ce que vous collez n’est conservé une fois la réponse envoyée.

Outils similaires

Outil disponible dans d’autres langues