Guide d'encodage d'URL : pourquoi et comment encoder les URL
Vous ĂȘtes-vous dĂ©jĂ demandĂ© pourquoi les espaces dans les URL deviennent %20 et les esperluettes deviennent %26 ? L'encodage d'URL (aussi appelĂ© encodage en pourcentage) convertit les caractĂšres qui ne sont pas sĂ»rs pour les URL dans un format que les serveurs web peuvent comprendre.
Pourquoi l'encodage d'URL est important
Les URL ne peuvent contenir qu'un ensemble limitĂ© de caractĂšres ASCII. Les caractĂšres spĂ©ciaux, les espaces et le texte non-ASCII nĂ©cessitent un encodage pour ĂȘtre transmis en toute sĂ©curitĂ©. Sans encodage, les URL se cassent de maniĂšre imprĂ©visible â un espace pourrait tronquer une URL, une esperluette pourrait ĂȘtre confondue avec un sĂ©parateur de paramĂštre.
Essayez notre Encodeur/Décodeur d'URL pour voir comment n'importe quel texte se transforme une fois encodé pour les URL.
Quels caractÚres nécessitent un encodage ?
CaractÚres sûrs (pas d'encodage nécessaire)
Lettres (A-Z, a-z), chiffres (0-9) et ces symboles : -, _, ., ~
CaractÚres réservés (à encoder lorsqu'utilisés comme données)
| CaractÚre | Encodé | RÎle dans les URL |
|---|---|---|
: | %3A | Séparateur de schéma |
/ | %2F | Séparateur de chemin |
? | %3F | DĂ©but de la chaĂźne de requĂȘte |
# | %23 | Identifiant de fragment |
& | %26 | Séparateur de paramÚtres |
= | %3D | Séparateur clé-valeur |
+ | %2B | Représente souvent un espace |
@ | %40 | Séparateur d'info utilisateur |
% | %25 | Indicateur d'encodage |
Toujours encoder
Les espaces (%20), les caractÚres non-ASCII (octets UTF-8 encodés) et tout caractÚre en dehors de l'ensemble sûr.
L'encodage d'URL en pratique
ParamĂštres de requĂȘte
Le cas d'utilisation le plus courant. Lors de la construction d'URL de recherche ou de requĂȘtes API :
https://api.example.com/search?q=hello%20world&lang=en
Données de formulaire
Les formulaires HTML avec method="GET" encodent automatiquement les valeurs des champs dans l'URL. Les espaces deviennent + dans l'encodage de formulaire (légÚrement différent de l'encodage en pourcentage).
Segments de chemin
Les noms de fichiers et identifiants de ressources dans les chemins d'URL nécessitent aussi un encodage. Un fichier nommé my report.pdf devient my%20report.pdf dans l'URL.
Encodage dans différents langages
JavaScript :
encodeURIComponent('hello world & more')
// "hello%20world%20%26%20more"
decodeURIComponent('hello%20world')
// "hello world"
Python :
from urllib.parse import quote, unquote
quote('hello world & more')
# 'hello%20world%20%26%20more'
Erreurs courantes
- Double encodage â Encoder une URL dĂ©jĂ encodĂ©e transforme
%20en%2520 - Utiliser
encodeURIau lieu deencodeURIComponentâencodeURIignore les caractĂšres rĂ©servĂ©s qui comptent dans les valeurs de requĂȘte - Ne pas encoder les signes
+â Dans les URL,+peut signifier espace. Encodez les vrais signes plus en%2B - Oublier le non-ASCII â Les caractĂšres Unicode nĂ©cessitent d'abord un encodage UTF-8, puis un encodage en pourcentage
Foire aux questions
Quelle est la différence entre encodeURI et encodeURIComponent ?
encodeURI encode une URL complĂšte, en ignorant les caractĂšres comme :, /, ?, #. encodeURIComponent encode tout sauf les caractĂšres non rĂ©servĂ©s â utilisez-le pour les valeurs individuelles de paramĂštres de requĂȘte.
Pourquoi les espaces deviennent-ils parfois + et parfois %20 ?
L'encodage de formulaire (application/x-www-form-urlencoded) utilise + pour les espaces. L'encodage en pourcentage standard utilise %20. Les deux sont valides dans différents contextes.
Ressources associées
- L'encodage Base64 expliquĂ© â Un autre schĂ©ma d'encodage essentiel
- Patterns de conception d'API JSON â Construire des API qui gĂšrent correctement l'encodage
- Encodeur/DĂ©codeur d'URL â Encodez et dĂ©codez des URL instantanĂ©ment
- Encodeur Base64 â Encodez des donnĂ©es au format Base64