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 :

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

Comment fonctionne le percent-encoding

L’algorithme est simple :

  1. Convertir le caractère en octets UTF-8
  2. 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

Questions fréquentes

Qu’est-ce que l’encodage URL ?
L’encodage URL (percent-encoding) remplace les caractères spéciaux dans une URL par %XX (valeur hexadécimale). Cela garantit que l’URL est valide et transmise sans ambiguïté.
Pourquoi encoder les URLs ?
Les URLs n’acceptent qu’un sous-ensemble de caractères ASCII. Les caractères comme l’espace, &, = ou les accents doivent être encodés pour ne pas être confondus avec la structure de l’URL.
Quelle est la différence entre encodeURI et encodeURIComponent ?
encodeURI encode une URL complète en préservant les séparateurs (/, ?, #). encodeURIComponent encode un paramètre individuel et encode aussi ces séparateurs.
Comment décoder une URL encodée ?
Utilisez notre outil URL Decode en ligne ou les fonctions decodeURIComponent() en JavaScript, urllib.parse.unquote() en Python, ou urldecode() en PHP.