Encodage URL
Encoder & decoder une URL
Entrée
Résultat
Encodage URL : pourquoi certains caracteres doivent etre transformes
Les URL n'acceptent qu'un jeu limite de caracteres : lettres, chiffres et quelques symboles. Des qu'un espace, un accent ou un caractere special entre en jeu, il doit etre converti au format %XX -- ce qu'on appelle l'encodage en pourcentage. Sans ca, le serveur risque de ne pas comprendre la requete.
Pourquoi l'encodage URL est indispensable
Les URL suivent la norme RFC 3986 et n'acceptent que les caracteres alphanumeriques plus quelques caracteres speciaux (-._~). Un espace, un accent francais ou un ideogramme dans une URL, et le serveur peut echouer a l'interpreter correctement. Les caracteres & et = servent de separateurs dans les parametres de requete : s'ils apparaissent dans les donnees elles-memes, il faut les encoder pour eviter toute ambiguite. L'encodage URL est tout simplement le mecanisme de base qui permet de transmettre des donnees de facon fiable sur le web.
Les caracteres qu'on encode le plus souvent
Les espaces deviennent %20 (ou + dans certains cas), le & se transforme en %26, le = en %3D et le ? en %3F. Les caracteres accentues du francais sont encodes en UTF-8, ce qui genere plusieurs sequences %XX par caractere. La barre oblique (/) sert de separateur de chemin et ne doit etre encodee que lorsqu'elle fait partie d'une valeur de parametre. Connaitre ces regles evite les bugs lies aux URL mal formees.
Bonnes pratiques pour les developpeurs
La regle d'or : n'encodez que les valeurs des parametres de requete, jamais la structure de l'URL elle-meme. En JavaScript, utilisez encodeURIComponent() pour les valeurs et encodeURI() pour les URL completes. En Python, c'est urllib.parse.quote(). Le double encodage -- quand on encode une chaine deja encodee -- est un classique du genre : on se retrouve avec des %2520 au lieu de %20. Pensez toujours a encoder les valeurs de parametres dans vos appels API, car elles peuvent contenir des caracteres speciaux inattendus.