Encodeur d'URL
Convertissez du texte au format sécurisé pour URL en encodant les caractères spéciaux.
Entrez le texte à encoder :
Comment utiliser URL Encoder / Decoder
- 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
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
Lancez la conversion
Traitez l'entrée pour la transformer instantanément dans le sens choisi.
- 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 ?
Cet outil peut-il à la fois encoder et décoder ?
Gère-t-il les caractères spéciaux et les autres langues ?
Quelle est la différence entre encoder une URL complète et une valeur isolée ?
Mes données sont-elles confidentielles et l'outil est-il gratuit ?
Outils similaires
Continuez avec ces outils pratiques