Langue : en | de | fr | es
Retour aux blogs

Qu'est-ce que l'encodage d'URL et pourquoi l'utilise-t-on ?

Que signifie une URL avec %20 ?

Si vous avez déjà copié un lien et remarqué des séquences étranges telles que %20, %3A ou %2F, vous êtes en présence de caractères encodés. Le plus courant d'entre eux est %20, qui représente un espace. Comprendre la signification de %20 dans une URL est essentiel pour les développeurs, les spécialistes du référencement et toute personne travaillant avec les technologies web.

Cet article explique comment fonctionne l'encodage des URL, pourquoi %20 apparaît dans les adresses web et comment le gérer correctement dans des scénarios réels.

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.