T

Text Machine

Des outils de texte puissants, dans votre navigateur

Encodeur d'URL

Convertissez du texte au format sécurisé pour URL en encodant les caractères spéciaux.

Texte d'Entrée

Entrez le texte à encoder :

Comment utiliser URL Encoder / Decoder

  1. 1

    Saisissez votre texte ou URL

    Collez le texte à encoder ou la chaîne encodée en URL à décoder dans la zone de saisie.

  2. 2

    Choisissez encoder ou décoder

    Sélectionnez Encoder pour convertir le texte en format compatible URL, ou Décoder pour reconvertir un texte encodé en pourcentage en texte normal.

  3. 3

    Lancez la conversion

    Traitez l'entrée pour la transformer instantanément dans le sens choisi.

  4. 4

    Copiez le résultat

    Copiez la sortie encodée ou décodée pour l'utiliser dans des liens, des chaînes de requête ou des requêtes API.

L'encodage d'URL et le percent-encoding expliqués

Ce qu'est l'encodage d'URL

L'encodage d'URL, plus précisément appelé percent-encoding, est le mécanisme qui permet à une URL de transporter des caractères qu'elle ne pourrait pas représenter autrement. Une URL est limitée à un petit ensemble de caractères ASCII, et plusieurs de ces caractères ont une signification structurelle particulière. Le percent-encoding remplace tout caractère problématique par un signe pour cent suivi des deux chiffres hexadécimaux de sa valeur d'octet, de sorte qu'un espace devient %20 et un dièse devient %23.

Les règles sont définies dans la RFC 3986, le standard qui régit la syntaxe des URI. Le but est simple : s'assurer qu'une valeur placée à l'intérieur d'une URL est transmise et analysée exactement comme prévu, sans qu'un caractère parasite soit pris pour un délimiteur ni supprimé par un logiciel en cours de route.

Caractères réservés contre non réservés

La RFC 3986 répartit les caractères en groupes. L'ensemble non réservé est toujours sûr et n'est jamais encodé : les lettres A-Z et a-z, les chiffres 0-9 et les quatre signes trait d'union (-), point (.), tiret bas (_) et tilde (~). Ils passent intacts parce qu'ils ne portent aucune signification structurelle et sont légaux partout dans une URL.

L'ensemble réservé est la ponctuation qui délimite les parties d'une URL : les délimiteurs génériques : / ? # [ ] @ et les sous-délimiteurs ! $ et & ' ( ) * + , ; =. Ces caractères sont légaux en tant que séparateurs, mais lorsqu'ils apparaissent à l'intérieur d'une valeur plutôt que comme délimiteur, ils doivent être percent-encodés pour qu'un analyseur ne les lise pas de travers. Par exemple, une esperluette à l'intérieur d'une valeur de requête doit devenir %26, faute de quoi elle serait lue comme le début d'un nouveau paramètre.

La base en octets UTF-8

Le percent-encoding opère sur des octets, pas directement sur des caractères, et les URL modernes utilisent l'UTF-8 comme source d'octets. Un caractère ASCII est un octet unique, donc un caractère ASCII encodé est un seul échappement par pourcentage. Un caractère hors ASCII est d'abord exprimé sous la forme de sa séquence d'octets UTF-8, puis chaque octet est percent-encodé séparément, produisant un échappement par octet.

La lettre accentuée é en est l'illustration standard. En UTF-8, ce sont les deux octets 0xC3 et 0xA9, elle se percent-encode donc en %C3%A9 — deux échappements pour un seul caractère visible. Le signe euro, trois octets en UTF-8, devient %E2%82%AC. C'est pourquoi le texte non latin gonfle autant une fois encodé : chaque caractère peut se transformer en deux, trois ou quatre échappements par pourcentage selon sa longueur en UTF-8.

Exemple détaillé : encoder une valeur de recherche

Supposons que vous vouliez placer la phrase « Q&A: cats + dogs » dans une chaîne de requête. Les lettres, les chiffres et le texte autour des deux-points restent sous forme de mots, mais les caractères non sûrs et réservés sont échappés. L'espace devient %20, l'esperluette devient %26, les deux-points deviennent %3A et le signe plus devient %2B, car un plus littéral serait autrement lu comme un espace dans les données de formulaire.

Le résultat est Q%26A%3A%20cats%20%2B%20dogs. Inséré dans un lien sous la forme ?q=Q%26A%3A%20cats%20%2B%20dogs, le serveur le redécode en la phrase d'origine exacte. Remarquez que chaque caractère réservé destiné à être une donnée, et non un délimiteur, a dû être encodé pour survivre au trajet.

Les espaces : %20 contre le signe plus

Les espaces ont une particularité célèbre. Dans le chemin et la majeure partie d'une URL, un espace est encodé en %20. Mais dans le format application/x-www-form-urlencoded utilisé par les soumissions de formulaires HTML et de nombreuses chaînes de requête, un espace est traditionnellement encodé en signe plus (+). Les deux conventions sont activement utilisées, ce qui est une source fréquente de confusion.

La conséquence pratique est qu'un signe plus littéral dans des données de style formulaire doit lui-même être encodé en %2B, afin de ne pas être pris pour un espace. Lorsque vous décodez, vous devez savoir quelle convention a produit la chaîne : un plus dans une valeur de formulaire signifie un espace, tandis qu'un plus ailleurs signifie généralement un plus littéral. Cet outil gère le percent-encoding standard afin que vos valeurs fassent un aller-retour proprement.

Encoder une URL entière contre une seule valeur

JavaScript expose deux fonctions qui correspondent à deux tâches différentes, et choisir la mauvaise est un bug classique. encodeURI est destinée à une URL entière : elle laisse intacts les caractères structurels : / ? # & = pour que l'URL continue de fonctionner, n'encodant que les caractères clairement illégaux comme les espaces. encodeURIComponent est destinée à un seul fragment de données, comme une valeur de requête ou un segment de chemin : elle échappe aussi les délimiteurs réservés, de sorte qu'une barre oblique ou une esperluette intégrée ne puisse pas casser l'URL environnante.

Cet outil effectue un encodage de style composant — le comportement de encodeURIComponent — qui est la valeur par défaut sûre pour insérer une valeur non fiable entre des délimiteurs que vous contrôlez : il échappe aussi les délimiteurs réservés, de sorte qu'une barre oblique ou une esperluette intégrée ne puisse pas casser l'URL environnante. Le compromis, c'est que vous ne devriez pas coller ici une adresse complète, car il échapperait aussi les caractères structurels : / ? # & = et dénaturerait le lien. Pour encoder une URL entière, encodez chaque valeur ou segment de chemin individuel, puis assemblez vous-même l'adresse finale.

L'erreur du double encodage

Le double encodage est le bug de percent-encoding le plus courant. Il survient lorsqu'un texte déjà encodé est encodé une seconde fois. Le déclencheur est le signe pour cent lui-même : un pour cent est un caractère réservé, donc l'encoder transforme %20 en %2520, parce que le % de tête devient %25 et que le 20 reste. Une valeur encodée deux fois affichera des séquences d'échappement littérales comme %2520 à l'utilisateur final au lieu de l'espace prévu.

Évitez-le en encodant exactement une fois, au moment où vous construisez l'URL, et en ne faisant jamais repasser dans l'encodeur une chaîne qui contient déjà des échappements par pourcentage. Si vous voyez %25 suivi de ce qui ressemble à un autre échappement, vous regardez presque certainement des données doublement encodées, et le correctif consiste à les décoder une fois de plus ou à supprimer l'étape d'encodage redondante dans votre code.

Où vous l'utiliserez

Le percent-encoding est partout où une valeur voyage à l'intérieur d'une URL. Construire des chaînes de requête pour la recherche et les filtres, fabriquer des liens contenant du texte saisi par l'utilisateur, passer des paramètres à des API REST, intégrer des cibles de redirection dans un paramètre return_url et signer des requêtes qui doivent correspondre octet pour octet dépendent tous d'un encodage correct. Les serveurs et frameworks web décodent automatiquement les URL entrantes, de sorte que la forme encodée est généralement quelque chose que vous produisez plutôt que vous ne lisez.

Une habitude utile consiste à encoder séparément chaque fragment dynamique au fur et à mesure que vous assemblez une URL, plutôt que d'encoder la chaîne finie en une seule passe. Cela garde vos délimiteurs intacts tout en rendant chaque valeur sûre, et cela esquive à la fois le sous-encodage qui casse les liens et le double encodage qui les corrompt.

Questions fréquentes

Que fait réellement l'encodage URL ?
Il remplace les caractères dangereux ou réservés dans les URL, comme les espaces, les esperluettes et les points d'interrogation, par des équivalents encodés en pourcentage comme %20 afin que le lien se transmette correctement.
Cet outil peut-il à la fois encoder et décoder ?
Oui, vous pouvez encoder du texte brut en format compatible URL et décoder des chaînes encodées en pourcentage pour les ramener à leur texte d'origine lisible, le tout avec le même outil.
Gère-t-il les caractères spéciaux et les autres langues ?
Oui, il encode correctement en pourcentage les caractères non-ASCII et Unicode, y compris les lettres accentuées et les écritures non latines, à l'aide de séquences d'octets UTF-8.
Quelle est la différence entre encoder une URL complète et une valeur isolée ?
Encoder une URL entière préserve les barres obliques et la structure, tandis qu'encoder une valeur de requête isolée échappe aussi des caractères comme / et ? ; choisissez l'entrée en conséquence pour éviter de casser le lien.
Mes données sont-elles confidentielles et l'outil est-il gratuit ?
Oui, l'encodage et le décodage se font entièrement dans votre navigateur : rien n'est envoyé à un serveur, et l'outil est gratuit, sans inscription.

Outils similaires

Continuez avec ces outils pratiques

Encoder / Décoder Base64

Décodeur de JWT

Encodeur / Décodeur HTML

Convertisseur HTML vers Texte

Formateur JSON

Testeur de Regex