Encodage URL : pourquoi et comment encoder vos URLs
Qu’est-ce que l’encodage URL ?
L’encodage URL (aussi appelé percent-encoding) est un mécanisme qui remplace les caractères spéciaux dans une URL par une séquence commençant par % suivie de deux chiffres hexadécimaux. Cela permet de transmettre des données dans une URL de manière sûre et sans ambiguïté.
Par exemple, un espace est encodé en %20, et le caractère & devient %26.
Pourquoi encoder les URLs ?
Les URLs ne peuvent contenir qu’un ensemble restreint de caractères ASCII. Certains caractères ont une signification spéciale dans la syntaxe d’une URL :
?sépare l’URL de la query string&sépare les paramètres=associe une clé à une valeur#introduit un fragment (ancre)/sépare les segments du chemin
Si vos données contiennent ces caractères, il faut les encoder pour éviter toute ambiguïté avec la structure de l’URL.
Caractères réservés et non réservés
Caractères non réservés (pas besoin d’encoder)
Lettres (A-Z, a-z), chiffres (0-9), et : - _ . ~
Caractères réservés (à encoder si utilisés comme données)
: / ? # [ ] @ ! $ & ' ( ) * + , ; =
Tableau d’encodage courant
- Espace :
%20(ou+dans les formulaires) &:%26=:%3D?:%3F#:%23/:%2F@:%40- Caractères accentués (é, à, ù...) : encodage UTF-8 multi-octets
Comment fonctionne le percent-encoding
L’algorithme est simple :
- Convertir le caractère en octets UTF-8
- Pour chaque octet, écrire
%suivi de la valeur hexadécimale sur 2 chiffres
Exemple
Le caractère é (e accent aigu) en UTF-8 = 0xC3 0xA9, donc encodé en %C3%A9.
Utilisez notre outil URL Encode/Decode pour encoder ou décoder instantanément.
Encodage URL en programmation
JavaScript
encodeURIComponent("texte à encoder") encode les caractères spéciaux sauf - _ . ! ~ * ' ( ).
encodeURI("https://example.com/page?q=texte") encode uniquement les caractères non valides dans une URL complète.
Python
urllib.parse.quote("texte") pour encoder un composant. urllib.parse.urlencode({"clé": "valeur"}) pour encoder un dictionnaire de paramètres.
PHP
urlencode("texte") (espaces en +) ou rawurlencode("texte") (espaces en %20).
Différence entre URL encoding et Base64
L’encodage URL est conçu spécifiquement pour les URLs : il préserve les caractères valides et n’encode que ce qui est nécessaire. Le Base64 encode toutes les données en caractères ASCII imprimables, générant une sortie plus longue.
Pour encoder des données binaires ou du texte long, découvrez aussi notre outil Base64 Encode/Decode.
Erreurs courantes
- Double encodage : encoder une URL déjà encodée (
%2520au lieu de%20) - Encoder l’URL complète au lieu du seul paramètre
- Oublier d’encoder les paramètres contenant des caractères spéciaux
- Utiliser
+vs%20:+ne représente un espace que dans les query strings de formulaires