Encodage d'URL
L’encodage d’URL représente un octet dans un composant d’URI par un signe pour cent suivi de deux chiffres hexadécimaux.
Définition
L’encodage d’URL, plus précisément encodage par pourcentage, représente un octet par % et deux chiffres hexadécimaux. Un espace peut ainsi devenir %20 et le signe pour cent lui-même %25.
Les caractères URI non réservés—lettres ASCII, chiffres, -, ., _ et ~—restent normalement inchangés. Les autres dépendent de leur position et de leur rôle.
Fonctionnement
Un texte non ASCII est d’abord converti en octets, généralement en UTF-8, puis les octets nécessaires sont encodés séparément. Ainsi, café devient caf%C3%A9.
Les caractères réservés /, ?, #, & et = structurent l’URL. Leur encodage dépend du composant : segment de chemin, paramètre, fragment ou autre.
Espaces et données de formulaire
L’encodage par pourcentage écrit un espace %20. Le format application/x-www-form-urlencoded, utilisé dans les requêtes et formulaires HTML, emploie souvent + ; un plus littéral devient alors %2B.
Les bibliothèques proposent généralement des fonctions distinctes pour URL, segments et valeurs de paramètres. La fonction propre au composant traite correctement les séparateurs.
Sécurité et pièges
L’encodage est réversible et n’est pas un chiffrement. Des valeurs sensibles peuvent rester visibles dans l’historique, les journaux, les données Referer et les traces serveur.
Réencoder un pourcentage déjà encodé produit un double encodage : %20 devient %2520. Les données décodées doivent toujours être validées, car l’encodage ne neutralise pas une entrée malveillante.
%20 est l’octet encodé d’un espace. + signifie espace uniquement dans l’encodage de formulaire ; ailleurs, il peut être littéral.
En général, non. Encodez segments et valeurs avec la fonction du composant afin que les séparateurs structurels conservent leur sens.
Non. Il assure la compatibilité syntaxique, mais ni confidentialité, ni intégrité, ni authenticité.