Tous les articles

URL Encode/Decode : le percent-encoding dans les liens

Un mot français avec un accent, une cédille ou une apostrophe — "café", "garçon", "l'été" — ne peut pas apparaître tel quel dans une URL : chaque caractère hors de l'ensemble sûr, espace compris, doit être transformé en percent-encoding.

Pourquoi une apostrophe française pose problème

Chaque lettre accentuée est d'abord convertie en UTF-8 (2 octets pour é, è, ç), puis chaque octet devient %XX : "café" devient caf%C3%A9. L'apostrophe typographique ' (différente du guillemet simple ') pose un problème à part — copiée depuis un traitement de texte dans une URL, elle génère un caractère Unicode multi-octets bien plus long que l'apostrophe ASCII habituelle.

encodeURIComponent contre encodeURI

encodeURIComponent échappe presque tous les caractères à valeur structurelle — &, ?, =, / — c'est le bon choix pour une seule valeur, comme un terme de recherche inséré dans ?q=. encodeURI laisse ces caractères structurels intacts, car elle sert à encoder une URL complète déjà construite.

Une erreur fréquente avec les paramètres d'URL

Encoder toute la chaîne de requête d'un coup avec encodeURIComponent transforme aussi les & et = qui séparent les paramètres en %26 et %3D — le serveur reçoit alors un seul paramètre illisible au lieu de plusieurs valeurs distinctes. Il faut encoder chaque valeur séparément, jamais la chaîne entière.

Quand s'en servir

  • Insérer un terme de recherche ou un nom de produit accentué dans un paramètre.
  • Construire un lien avec des valeurs dynamiques (recherche, identifiants).
  • Diagnostic : décoder une URL pour voir les données réellement encodées.

Cas limite : le double encodage

Si une chaîne déjà encodée en percent-encoding est encodée une seconde fois, le caractère % lui-même devient %25 — le résultat devient un charabia illisible (%C3%A9 devient %25C3%25A9). Cela arrive souvent quand un framework encode déjà l'URL automatiquement et que le code appelle en plus encodeURIComponent manuellement sur une valeur déjà encodée.

Essayer l'outil