Développement web · Gratuit · Sans inscription
Encoder et décoder un composant d’URL
Convertissez du texte Unicode en séquences percent-encoded ou relisez un composant URL sans modifier une adresse complète.
L’outil applique `encodeURIComponent()` et `decodeURIComponent()` dans le navigateur. Il convient à une valeur de paramètre, un fragment de chemin ou un petit texte destiné à une URL, mais pas à l’encodage aveugle d’une adresse entière. Les espaces deviennent `%20`, les accents utilisent leurs octets UTF-8 et un signe `+` n’est pas transformé automatiquement en espace au décodage.
🔒 Le traitement s’effectue dans ce navigateur ; vos données ne sont pas envoyées à FunnyTools.
Utiliser l’outil
Ce que vous pouvez faire ici
- Encoder un texte Unicode avec `encodeURIComponent()`.
- Décoder une suite percent-encoded avec `decodeURIComponent()`.
- Traiter accents, emoji, espaces et caractères réservés en UTF-8.
- Signaler une séquence `%` incomplète ou des octets UTF-8 invalides.
- Copier la sortie sans envoyer la valeur à FunnyTools.
Réponse rapide : encoder ou décoder une valeur URL
Collez la valeur seule dans le champ, puis cliquez sur « Encoder le composant » pour obtenir des séquences `%XX`. `été à Paris` devient par exemple `été` sous forme d’octets UTF-8 encodés et l’espace devient `%20`. Pour revenir au texte, placez la chaîne encodée dans l’entrée et utilisez « Décoder le composant ». Une séquence mal formée provoque un message d’erreur au lieu d’un résultat partiel.
L’opération porte sur un composant, pas sur toute une adresse. Si vous encodez `https://exemple.fr/recherche?q=été` en une seule fois, les deux-points, barres obliques, point d’interrogation et signe égal seront eux aussi protégés, ce qui détruit la structure de navigation. Séparez le chemin, les noms et valeurs de paramètres avec l’API `URL` ou `URLSearchParams`, puis encodez seulement la donnée qui en a besoin.
Percent-encoding, UTF-8 et caractères français
Le percent-encoding représente chaque octet concerné par `%` suivi de deux chiffres hexadécimaux. Les lettres ASCII ordinaires restent généralement lisibles ; les lettres accentuées, emoji et caractères d’autres alphabets sont d’abord convertis en UTF-8, puis chaque octet est encodé. Un seul symbole visible peut donc produire plusieurs groupes `%XX`.
`encodeURIComponent()` laisse aussi quelques signes non réservés tels que `-`, `_`, `.`, `!`, `~`, `*`, apostrophe et parenthèses. Cette liste vient de la fonction JavaScript, pas d’une règle métier propre à votre API. Un système peut exiger une normalisation plus stricte, une signature exacte ou une autre représentation. Comparez toujours avec sa documentation et testez l’aller-retour.
- Les accents sont représentés à partir de leurs octets UTF-8.
- Un espace devient `%20` avec `encodeURIComponent()`.
- Les séparateurs réservés d’une URL sont encodés lorsqu’ils font partie de l’entrée.
- Le résultat ne valide ni domaine, ni protocole, ni destination.
Composant URL et adresse complète : ne pas confondre
Une URL complète possède une structure : schéma, hôte, port éventuel, chemin, requête et fragment. Les caractères `:`, `/`, `?`, `&`, `=` et `#` séparent ces zones. `encodeURIComponent()` les encode parce qu’il suppose que tout le texte est une valeur. C’est utile pour un terme de recherche, mais incorrect pour envelopper une URL déjà assemblée.
Pour ajouter une valeur à `?q=`, utilisez idéalement `new URL()` et `searchParams.set()`. Ces API conservent la structure et gèrent la sérialisation. Pour un segment de chemin, vérifiez si la barre `/` doit être un séparateur ou un caractère littéral. Ne concaténez jamais une entrée utilisateur à une redirection sans valider la destination et la politique de sécurité.
Espace `%20`, signe `+` et formulaires
Dans une URL percent-encoded, l’espace devient `%20`. Le format historique `application/x-www-form-urlencoded`, utilisé par de nombreux formulaires et par `URLSearchParams`, peut représenter l’espace par `+`. `decodeURIComponent()` ne suit pas cette convention : il laisse `+` tel quel. Ainsi, `Jean+Dupont` devient toujours `Jean+Dupont` avec ce widget.
Si l’entrée provient d’un formulaire, remplacez le `+` par un espace seulement si le format source le garantit, puis décodez les pourcentages. Ne faites pas ce remplacement sur une valeur où le plus est réel, par exemple une expression ou un indicatif. Les deux formats se ressemblent mais ne sont pas interchangeables sans contexte.
Double encodage et séquences invalides
Encoder une valeur déjà protégée transforme le signe `%` en `%25`. `%20` devient alors `%2520` et un seul décodage redonne `%20`, pas un espace. Ce double encodage est fréquent lorsqu’une couche applicative et une bibliothèque encodent la même valeur. Conservez chaque étape et ne répétez l’opération que si le protocole demande réellement une valeur imbriquée.
Le décodeur refuse un `%` sans deux chiffres hexadécimaux, ainsi que des octets qui ne forment pas un texte UTF-8 valide. L’encodeur peut aussi refuser une chaîne JavaScript contenant une moitié de paire surrogate isolée, souvent issue d’un texte corrompu. Corrigez la source plutôt que de supprimer arbitrairement le caractère signalé.
Sécurité, confidentialité et vérification
L’encodage URL ne nettoie pas une valeur dangereuse. Une chaîne décodée peut contenir du JavaScript, un chemin de traversée, une redirection externe ou une tentative d’injection. Le percent-encoding facilite le transport ; il ne rend pas une entrée fiable. Validez la destination, imposez les protocoles autorisés et échappez selon le contexte de sortie.
La conversion s’effectue dans cet onglet et FunnyTools ne reçoit pas la valeur pour la traiter. N’y collez pourtant aucun token de réinitialisation, clé API, URL privée ou donnée personnelle. Après conversion, comparez l’aller-retour, contrôlez `%20` et `+`, puis testez dans une adresse fictive avant de l’utiliser en production.
Mode d’emploi étape par étape
- Identifiez la valeur précise à encoder au lieu de coller une URL complète.
- Encodez ou décodez une copie sans secret ni donnée personnelle.
- Vérifiez accents, espaces, `+`, séparateurs réservés et éventuel double encodage.
- Assemblez l’adresse avec `URL` ou `URLSearchParams` lorsque c’est possible.
- Validez destination et sécurité dans le système cible avant publication.
Dans quelles situations cet outil est utile
- Encoder `été à Lyon` comme valeur d’un paramètre de recherche.
- Décoder `%C3%A9cole%20publique` vers un texte UTF-8.
- Constater qu’un `+` reste un plus avec `decodeURIComponent()`.
- Repérer `%2520` comme indice d’un double encodage.
- Éviter d’encoder en bloc `https://exemple.fr/?q=...`.
Exemples détaillés
Recherche avec accent
Le terme `café ouvert` est encodé comme valeur de `q`, puis l’URL est construite séparément. L’aller-retour confirme accents et espace.
Valeur de formulaire contenant `+`
La source est identifiée comme formulaire avant de convertir les plus en espaces. Le widget seul les conserverait, conformément à `decodeURIComponent()`.
Paramètre encodé deux fois
La présence de `%252F` montre que `%2F` a été réencodé. L’équipe corrige la couche responsable au lieu d’ajouter plusieurs décodages aveugles.
Relecture éditoriale et test de fonctionnement:
Comment vérifier un composant URL
Une chaîne encodée doit encore être replacée dans la bonne zone d’URL et contrôlée selon le format du système destinataire.
Isolez la valeur
Séparez schéma, domaine, chemin, paramètres et fragment avant l’encodage.
Testez le retour
Décodez une copie et comparez accents, espaces, signes plus et séparateurs.
Validez la destination
L’encodage ne bloque ni redirection dangereuse ni injection dans un autre contexte.
Liste de contrôle
- L’entrée est un composant et non une URL complète.
- La convention `%20` ou `+` correspond au format source.
- La valeur n’a pas été encodée deux fois.
- Le domaine, le protocole et la destination sont autorisés.
Limites et vérifications importantes
- Le widget utilise `encodeURIComponent()` et `decodeURIComponent()`.
- Il encode un composant, pas une adresse complète structurée.
- Un espace devient `%20` et `+` reste un signe plus au décodage.
- Une chaîne déjà encodée peut produire `%25` lors d’un second passage.
- L’encodage URL n’est ni validation, ni assainissement de sécurité.
Questions fréquentes
Puis-je encoder une URL complète ?
Ce n’est pas recommandé. Les séparateurs `:`, `/`, `?`, `&` et `=` seraient encodés ; traitez séparément chaque composant.
Pourquoi un espace devient-il `%20` et non `+` ?
`encodeURIComponent()` utilise `%20`. Le signe `+` pour un espace appartient au format des formulaires URL-encoded.
Le décodeur transforme-t-il `+` en espace ?
Non. Il conserve `+`. Faites une conversion préalable seulement si la source est bien un formulaire.
Que signifie `%25` dans le résultat ?
C’est le signe `%` encodé. Il peut indiquer qu’une valeur déjà percent-encoded a été encodée une seconde fois.
L’encodage rend-il une valeur sûre ?
Non. Validez toujours protocole, domaine, destination et contexte de sortie.
La valeur est-elle envoyée à FunnyTools ?
Non. L’encodage et le décodage s’exécutent localement dans cet onglet.
Confidentialité et traitement local
La valeur est encodée ou décodée localement dans cet onglet. FunnyTools ne reçoit pas le contenu pour le convertir.
Utiliser le résultat avec discernement
Le percent-encoding ne valide ni ne sécurise une URL. N’encodez pas une adresse complète à l’aveugle et contrôlez toujours la destination.
Dernière relecture éditoriale: