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 d’URL : définition et fonctionnement
L’encodage d’URL, aussi appelé encodage en pourcentage, permet de représenter des caractères dans une adresse web à l’aide d’un petit jeu de caractères ASCII sûrs. Il remplace chaque 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 JavaScript native encodeURIComponent.
Pourquoi les URL doivent être encodées
Une URL ne peut contenir qu’un ensemble 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 des symboles comme & ou = peuvent casser une URL ou en modifier le sens s’ils y figurent sans être encodés. 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 tous les serveurs lisent de la même façon.
Caractères que cet outil laisse inchangés
Cet outil ne touche jamais aux caractères suivants. Ils passent tels quels :
- Lettres majuscules et minuscules :
A–Z,a–z - Chiffres :
0–9 - Les signes de ponctuation
-._~!*'()
Tous les autres caractères sont encodés en pourcentage, notamment :
- Le caractère espace, ainsi que des signes de ponctuation comme
:/?#[]@$&+,;= - Les lettres accentuées et tout autre caractère non ASCII ou Unicode
- Le caractère
%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 rangent ! * ' ( et ) avec d’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 le jeu de règles de encodeURIComponent, qui les considère comme sûrs.
Comment calculer une chaîne encodée en pourcentage (formule)
L’outil examine un à un chaque caractère de l’entrée et applique cette règle :
- Si le caractère fait partie des caractères inchangés énumérés plus haut, il est conservé tel quel.
- Sinon, le caractère est converti en sa séquence d’octets UTF-8. La plupart des lettres accentuées d’Europe occidentale occupent deux octets ; les caractères d’écritures comme le chinois ou l’arabe en occupent souvent trois.
- Chaque octet est écrit sous la forme d’un nombre hexadécimal à deux chiffres.
- Un
%est placé devant chaque paire hexadécimale. - Les résultats sont assemblés dans l’ordre pour former la chaîne encodée.
Exemple
Entrée : Jürgen & Björk
Détail du 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 second exemple montre l’ensemble des caractères inchangés à l’œuvre. L’encodage de la chaîne -_.!~*'() produit -_.!~*'(), exactement le même texte, car chacun de ses caractères appartient à l’ensemble des caractères non réservés. L’encodage de la chaîne 100% produit 100%25, car le signe % n’est pas un caractère sûr.
Décodage d’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 le caractère UTF-8 d’origine, et ce caractère remplace la séquence. Par exemple, %C3%BC redonne ü, et %20 redonne un espace. Cet outil ne fait qu’encoder ; il faut un décodeur distinct pour inverser le processus.
Utilisations courantes
L’encodage en pourcentage sert chaque fois qu’un texte saisi par une personne, et non écrit par un programmeur, doit entrer dans une URL :
- Les zones de recherche qui placent le terme recherché dans la barre d’adresse, comme
?q=shoes%20%26%20bags - Les paramètres de requête qui transportent des noms, des adresses ou d’autres données d’utilisateur
- Les liens vers des pages dont le titre est rédigé dans des langues qui utilisent des lettres accentuées ou des écritures non latines
- 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'
5Historique
L’idée d’encoder les caractères non sûrs d’une URL remonte à la RFC 1738 en 1994, l’un des premiers documents à définir le format des URL. La RFC 3986, publiée en 2005, a mis à jour les règles et défini formellement 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 un peu plus large que celui de la RFC 3986 : elle laisse aussi ! * ' ( et ) non encodés, comme dans une version antérieure de la spécification des URI.
Questions fréquentes
Quelle est la différence entre l’encodage d’URL et l’échappement d’URL ?
Il n’y en a aucune. Les deux termes désignent l’encodage en pourcentage, où un caractère est remplacé 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 laisse tels qu’ils ont été saisis. D’autres fonctions d’encodage, et certains serveurs, peuvent toutefois attendre qu’ils soient encodés ; en cas de problème, il faut donc vérifier le système de destination.
Quelle est la différence entre %20 et + pour 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 des envois de formulaires HTML, qui n’est pas celui de cet outil.
Cet outil décode-t-il un texte déjà encodé ?
Non, il ne fait qu’encoder. Si l’entrée contient déjà un signe %, ce % est traité comme un caractère littéral et devient %25 dans la sortie, au lieu d’être laissé tel quel.
Comment les caractères non latins, comme un texte chinois ou arabe, 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. La plupart des caractères chinois occupent trois octets : un seul caractère chinois produit donc trois groupes %XX dans la sortie.
Faut-il encoder une URL entière ou seulement une partie ?
Seules les parties qui contiennent des données d’utilisateur, comme les valeurs de requête ou les segments de chemin, doivent être encodées, et non celles qui forment la structure de l’URL, comme https:// et le nom de domaine. Encoder une URL complète avec un encodeur de composants transformerait aussi ses caractères :, / et ? en codes de pourcentage, ce qui casserait l’adresse.
Références
- Internet Engineering Task Force. RFC 3986: Uniform Resource Identifier (URI): Generic Syntax (janvier 2005). RFC 3986 — encodage en pourcentage sous la forme « % » suivi de deux chiffres hexadécimaux ; non réservés = ALPHA / DIGIT / "-" / "." / "_" / "~".
- MDN Web Docs (Mozilla). encodeURIComponent(). MDN, encodeURIComponent() — échappe tous les caractères sauf A–Z a–z 0–9 - _ . ! ~ * '.
- Internet Engineering Task Force. RFC 1738: Uniform Resource Locators (URL) (décembre 1994). RFC 1738 — première spécification des URL, qui définit l’encodage « % » suivi de deux chiffres hexadécimaux.
- Internet Engineering Task Force. RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax (août 1998). RFC 2396 — ancien ensemble de « marques » "mark" non réservées : - _ . ! ~ * '.
- WHATWG. URL Standard. WHATWG URL Standard — application/x-www-form-urlencoded utilise « + » pour un espace.