Tout savoir sur l'encodage d'URL en 2026
Percent-encoding, caractères réservés, encodeURIComponent vs encodeURI, et les pièges qui cassent vos liens.
1. Pourquoi faut-il encoder une URL ?
Une URL ne peut contenir qu'un jeu de caractères très restreint, défini par la norme RFC 3986 : les lettres non accentuées, les chiffres et quelques symboles (- _ . ~). Tout le reste — espaces, accents, esperluettes, signes de ponctuation, émojis — doit être encodé pour être transmis sans ambiguïté. L'encodage URL, aussi appelé percent-encoding, remplace chaque caractère problématique par un % suivi de son code hexadécimal. Un espace devient %20, le caractère é devient %C3%A9 en UTF-8.
Sans cet encodage, un espace ou une esperluette dans un paramètre serait interprété comme la fin de la valeur, voire comme un nouveau paramètre, et votre lien arriverait tronqué ou faux côté serveur.
2. Caractères réservés vs caractères autorisés
La RFC 3986 distingue deux familles. Les caractères réservés ont un rôle structurel dans l'URL et doivent être encodés s'ils apparaissent dans une valeur :
| Caractère | Rôle | Encodé |
|---|---|---|
| espace | séparateur | %20 |
| & | sépare les paramètres | %26 |
| = | clé = valeur | %3D |
| ? | début de la query string | %3F |
| # | ancre / fragment | %23 |
| / | séparateur de chemin | %2F |
Les caractères non réservés (lettres, chiffres, - _ . ~) ne sont jamais encodés : c'est inutile et certains serveurs les décodent de toute façon.
3. encodeURIComponent ou encodeURI : lequel choisir ?
C'est la confusion la plus fréquente côté développeur. Les deux fonctions JavaScript n'encodent pas la même chose :
- encodeURIComponent encode tout, y compris
/ ? & = #. À utiliser pour une valeur de paramètre : le nom d'un client, un terme de recherche, un token. - encodeURI préserve la structure de l'URL : il n'encode pas
/ ? & =. À utiliser pour encoder une URL complète déjà construite, par exemple pour corriger des espaces.
Règle simple : si vous encodez un bout que vous allez ensuite coller dans une URL, prenez encodeURIComponent. L'outil ci-dessus utilise encodeURIComponent par défaut, le bon choix dans 90 % des cas.
4. Cas d'usage concrets
- Paramètres de recherche :
?q=café crèmedoit devenir?q=caf%C3%A9%20cr%C3%A8mepour ne pas casser. - Appels d'API REST : un identifiant contenant un
/ou un+doit être encodé sous peine de 404. - Liens mailto : le sujet et le corps d'un
mailto:doivent être encodés, un saut de ligne devient%0A. - Redirections OAuth : le paramètre
redirect_uriest systématiquement percent-encodé.
Pour d'autres conversions, voyez nos outils Base64 et formateur JSON.
Epsylon Tools