Que signifie « %20 » dans une URL : explication technique
Dans les URL, les espaces ne sont pas autorisés en tant que caractères littéraux. Le Web utilise une norme appelée « encodage en pourcentage » (également connue sous le nom d'encodage URL) pour représenter les caractères spéciaux.
%20 est la représentation hexadécimale du caractère espace ASCII.
Pourquoi 20?
- Espace en ASCII = décimal 32
- 32 en hexadécimal = 20
- Format d'encodage en pourcentage = % + valeur hexadécimale
Donc :
Espace → ASCII 32 → Hex 20 → %20
C'est toute la logique derrière %20 est un espace.
Exemple
Texte original :
https://example.com/my page.html
Version encodée :
https://example.com/my%20page.html
Les navigateurs convertissent automatiquement les espaces au format d'encodage URL %20 afin de rendre l'adresse valide.
Encodage URL %20 : pourquoi existe-t-il ?
Les URL doivent respecter les normes strictes définies par la RFC 3986. Seuls certains caractères spécifiques sont autorisés directement. Les autres doivent être encodés.
Caractères nécessitant généralement un encodage :
- Espace
- ?
- &
- =
- %
- Caractères non ASCII (e.g., é, ü)
Exemple : paramètres de requête
Non codé (non valide) :
https://example.com/search?q=red shoes
Codé :
https://example.com/search?q=red%20shoes
Sans codage, le navigateur ne peut pas interpréter correctement la structure de l'URL.
%20 dans l'adresse Web par rapport à d'autres caractères encodés
Bien que %20 soit le plus courant, de nombreux caractères sont encodés de manière similaire.
|
Personnage |
ASCII (décembre) |
Hex |
Codé |
|
Espace |
32 |
20 |
%20 |
|
! |
33 |
21 |
%21 |
|
" |
34 |
22 |
%22 |
|
# |
35 |
23 |
%23 |
|
& |
38 |
26 |
%26 |
|
/ |
47 |
2F |
%2F |
La compréhension de ce tableau facilite le débogage manuel des URL.
Signification dans les chemins d'accès URL par rapport aux chaînes de requête
Le comportement de l'encodage diffère légèrement selon l'endroit où il apparaît.
1. Segment de chemin d'accès
https://example.com/files/My%20Document.pdf
Ici, %20 représente un espace littéral dans le nom de fichier.
2. Paramètres de requête
https://example.com/search?keyword=machine%20learning
Ici, il représente un espace à l'intérieur d'une valeur de requête.
3. Identificateurs de fragment
https://example.com/page#Section%202
Même les ancres peuvent contenir des espaces codés.
Http %20 et interprétation du serveur
Les serveurs décodent automatiquement les valeurs encodées en pourcentage avant de traiter les requêtes.
Par exemple :
GET /products/Red%20Shoes HTTP/1.1
Le serveur reçoit :
/products/Red Shoes
Cette étape de décodage se déroule comme suit :
- Le navigateur encode les caractères non sécurisés.
- La requête HTTP est envoyée.
- Le serveur décode.
- L'application traite la chaîne lisible.
- C'est pourquoi les développeurs voient rarement %20 dans la logique de l'application, sauf s'ils enregistrent les URL brutes.
Exemples pratiques pour développeurs
Exemple 1 : Encodage JavaScript
encodeURIComponent("red shoes");
Sortie:
red%20shoes
Exemple 2 : Décodage en JavaScript
decodeURIComponent("red%20shoes");
Sortie:
red shoes
Exemple 3 : Python
import urllib.parse
encoded = urllib.parse.quote("data science")
print(encoded)
Sortie:
data%20science
Décodage:
urllib.parse.unquote("data%20science")
Quand %20 ne doit pas être utilisé
Dans les chaînes de requête, les espaces peuvent parfois apparaître sous la forme +.
Exemple :
https://example.com/search?q=red+shoes
Dans les soumissions de formulaire utilisant application/x-www-form-urlencoded, l'espace est encodé sous la forme +, et non %20.
Différence importante :
- %20 → encodage en pourcentage standard
- + → cas particulier pour les données de formulaire
Cette distinction est importante dans l'analyse syntaxique backend.
SEO et %20 dans les URL
Les moteurs de recherche gèrent correctement les espaces encodés. Cependant, les meilleures pratiques suggèrent :
- Évitez complètement les espaces dans les URL.
- Utilisez plutôt des tirets (-) à la place.
Préférable :
https://example.com/red-shoes
Au lieu de :
https://example.com/red%20shoes
Pourquoi ?
- Structure plus claire
- Meilleure lisibilité
- Moins d'étapes d'encodage
- Risque réduit de problèmes liés au copier-coller
Erreurs courantes et conseils de débogage
1. Double encodage
Incorrect :
red%2520shoes
Ici, %25 représente %, ce qui signifie que la chaîne a été encodée deux fois.
2. Construction manuelle d'URL
Évitez de créer des URL par concaténation de chaînes :
« /search?q= » + userInput
À la place :
« /search?q= » + encodeURIComponent(userInput)
3. Interprétation erronée des barres obliques codées
%2F représente /. Si le décodage est incorrect, cela peut modifier la hiérarchie des chemins.
Résumé : Pourquoi %20 apparaît dans les URL
Pour résumer clairement :
- %20 correspond à un espace.
- Il fait partie du codage en pourcentage.
- Il garantit que les URL restent valides et lisibles par les machines.
- Les navigateurs le codent automatiquement.
- Les serveurs le décodent automatiquement.
- Il est nécessaire pour une transmission HTTP sécurisée.
Il est essentiel de comprendre le codage dans les cas suivants :
- Débogage d'API
- Utilisation de redirections
- Gestion de contenu généré par les utilisateurs
- Gestion des téléchargements de fichiers
- Optimisation des URL pour le référencement
Lorsque vous voyez %20 dans une adresse web, cela signifie simplement qu'un espace a été codé de manière sécurisée pour être transporté sur le web.
Les frameworks modernes gèrent cela automatiquement, mais comprendre son fonctionnement permet d'éviter les bugs de codage, les problèmes de sécurité et les requêtes mal formées dans les systèmes de production.