Encodeur d'URL : Échapper les Caractères Spéciaux dans les URL en Ligne Gratuitement
Outil gratuit d'échappement de chaîne URL pour encoder instantanément les caractères spéciaux. Convertissez les espaces, Unicode et les symboles au format pour-cent. Parfait pour les API, les formulaires web et les URL internationales. Essayez maintenant !
Échappeur de chaîne URL
Documentation
Encodage des URL : ce que c’est et comment cela fonctionne
L’encodage d’URL, également appelé encodage en pourcentage, permet de représenter des caractères dans une adresse web en utilisant uniquement un petit ensemble de caractères ASCII sûrs. Il remplace un caractère non sûr par un signe % suivi de deux chiffres hexadécimaux. Cet outil d’échappement de chaînes d’URL encode le texte de la même manière que la fonction intégrée encodeURIComponent de JavaScript.
Pourquoi les URL doivent être encodées
Une URL ne peut contenir qu’un nombre limité de caractères : des lettres, des chiffres et quelques signes de ponctuation. Les espaces, les lettres accentuées, les caractères des alphabets non latins et les symboles tels que & ou = peuvent rendre une URL invalide ou en modifier le sens s’ils y apparaissent sans encodage. Un espace dans un lien, par exemple, peut amener un navigateur ou un serveur à lire l’URL comme deux éléments distincts. L’encodage en pourcentage remplace ces caractères par un code que tous les navigateurs et serveurs peuvent interpréter de la même manière.
Caractères que cet outil laisse inchangés
Cet outil ne modifie jamais les caractères suivants. Ils sont conservés tels quels :
- Lettres majuscules et minuscules :
A–Z,a–z - Chiffres :
0–9 - Signes de ponctuation
-._~!*'()
Tous les autres caractères sont encodés en pourcentage, notamment :
- L’espace et les signes de ponctuation tels que
:/?#[]@$&+,;= - Les lettres accentuées et tout autre caractère non ASCII ou Unicode
- Le caractère
%littéral lui-même, qui devient toujours%25, même s’il faisait déjà partie d’une séquence encodée en pourcentage
Certains guides généraux sur la syntaxe des URL classent ! * ' ( et ) avec les autres signes de ponctuation parmi les caractères qui « peuvent nécessiter un encodage » dans certains contextes. Cet outil ne les encode pas, car il suit l’ensemble de règles de encodeURIComponent, selon lequel ces caractères sont considérés comme sûrs.
Comment calculer une chaîne encodée en pourcentage (formule)
L’outil examine chaque caractère de l’entrée, un par un, et applique la règle suivante :
- Si le caractère fait partie des caractères laissés inchangés listés ci-dessus, le conserver tel quel.
- Sinon, convertir le caractère en sa séquence d’octets UTF-8. Les lettres latines accentuées, grecques, cyrilliques et arabes utilisent deux octets. Les caractères chinois, japonais et coréens en utilisent trois. Les emoji en utilisent quatre.
- Écrire chaque octet sous la forme d’un nombre hexadécimal à deux chiffres.
- Placer un
%devant chaque paire hexadécimale. - Joindre les résultats dans l’ordre pour former la chaîne encodée.
Exemple
Entrée : Jürgen & Björk
Traitement caractère par caractère :
| Caractère | Résultat |
|---|---|
J | J (inchangé) |
ü | %C3%BC (octets UTF-8 0xC3, 0xBC) |
rgen | rgen (inchangé) |
(espace) | %20 |
& | %26 |
(espace) | %20 |
Bj | Bj (inchangé) |
ö | %C3%B6 (octets UTF-8 0xC3, 0xB6) |
rk | rk (inchangé) |
Sortie : J%C3%BCrgen%20%26%20Bj%C3%B6rk
Un deuxième exemple montre le fonctionnement de l’ensemble des caractères inchangés. L’encodage de la chaîne -_.!~*'() produit -_.!~*'(), exactement le même texte, car chaque caractère appartient à l’ensemble des caractères non réservés. L’encodage de la chaîne 100% produit 100%25, car le signe % lui-même n’est pas un caractère sûr.
Décoder une chaîne encodée en pourcentage
Le décodage inverse le processus : chaque séquence %XX est lue comme un octet hexadécimal, les octets sont regroupés pour reconstituer leur caractère UTF-8 d’origine, puis le caractère remplace la séquence. Par exemple, %C3%BC est décodé en ü, et %20 est décodé en espace. Cet outil encode uniquement ; un décodeur distinct est nécessaire pour effectuer l’opération inverse.
Utilisations courantes
L’encodage en pourcentage est utilisé chaque fois qu’un texte saisi par une personne, plutôt qu’écrit par un programmeur, doit être intégré à une URL :
- Les champs de recherche qui placent le terme recherché dans la barre d’adresse, par exemple
?q=shoes%20%26%20bags - Les paramètres de requête contenant des noms, des adresses ou d’autres données utilisateur
- Les liens vers des pages dont les titres utilisent des lettres accentuées ou des systèmes d’écriture non latins
- Les requêtes d’API qui transmettent des jetons ou des identifiants dans l’URL
Exemples de code
1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
41# Python
2import urllib.parse
3urllib.parse.quote("Jürgen & Björk", safe="!*'()")
4# 'J%C3%BCrgen%20%26%20Bj%C3%B6rk'
5La fonction quote de Python laisse toujours inchangés les lettres, les chiffres et - . _ ~. Les cinq caractères supplémentaires ! * ' ( ) doivent être indiqués dans safe pour obtenir le même résultat que cet outil. Sans eux, quote renvoie %21 %2A %27 %28 %29.
Historique
L’idée d’encoder les caractères non sûrs dans une URL remonte à la RFC 1738 de 1994, l’un des premiers documents à définir le format des URL. Publiée en 2005, la RFC 3986 a mis à jour les règles et défini officiellement l’ensemble des caractères « non réservés » qui n’ont jamais besoin d’être encodés. encodeURIComponent, la fonction JavaScript sur laquelle repose cet outil, suit un ensemble de caractères non réservés légèrement plus large que celui de la RFC 3986 : elle laisse également ! * ' ( et ) non encodés, conformément à une version antérieure de la spécification des URI.
Foire aux questions
Quelle est la différence entre l’encodage d’URL et l’échappement d’URL ?
Il s’agit de la même chose. Les deux termes désignent l’encodage en pourcentage, qui remplace un caractère par % suivi de deux chiffres hexadécimaux.
Pourquoi !, *, ', ( et ) restent-ils inchangés dans cet outil ?
Cet outil utilise encodeURIComponent, qui considère ces cinq caractères comme sûrs et les conserve exactement tels qu’ils ont été saisis. D’autres fonctions d’encodage et certains serveurs peuvent toutefois s’attendre à ce qu’ils soient encodés. Il convient donc de vérifier le système de destination en cas de problème.
Quelle est la différence entre %20 et + pour représenter un espace ?
Les deux représentent un espace. %20 est l’encodage en pourcentage général d’un espace. Le signe + est un cas particulier utilisé uniquement dans les données application/x-www-form-urlencoded, le format employé par les envois de formulaires HTML, et non par cet outil.
Cet outil décode-t-il un texte déjà encodé ?
Non. Il encode uniquement. Si l’entrée contient déjà un signe %, celui-ci est traité comme un caractère littéral et devient %25 dans la sortie, au lieu d’être conservé tel quel.
Comment les caractères non latins, comme les caractères chinois ou arabes, sont-ils traités ?
Chaque caractère est d’abord converti en sa séquence d’octets UTF-8, puis chaque octet est encodé en pourcentage. Un caractère chinois utilise trois octets et produit donc trois groupes %XX. Une lettre arabe utilise deux octets et en produit donc deux.
Dans quels cas l’outil refuse-t-il d’encoder le texte ?
Uniquement lorsque le texte contient une moitié de paire de substituts. Une paire de substituts est le code en deux parties qui stocke un caractère supérieur à U+FFFF, comme un emoji. Une moitié isolée ne possède pas de forme UTF-8 valide ; l’outil affiche donc une erreur au lieu d’un résultat. Une saisie ordinaire ne peut pas en produire une : ce cas provient généralement d’une copie tronquée ou d’un lien incorrect.
Faut-il encoder une URL entière ou seulement une partie ?
Il faut encoder uniquement les parties qui contiennent des données utilisateur, comme les valeurs de requête ou les segments de chemin, et non les parties qui constituent la structure de l’URL, comme https:// et le nom de domaine. Encoder une URL entière avec un encodeur de composants transformerait également ses caractères :, / et ? en codes en pourcentage, ce qui rendrait l’adresse inutilisable.