Certains caractères posent problème dans une URL. Par exemple, il ne peut pas y avoir un espace dans une URL, sinon le navigateur lit l’URL en s’arrêtant à l’espace. Or il peut être parfois nécessaire d’avoir des caractères « interdits » dans l’URL. Pour contourner ce problème, les caractères concernés peuvent alors être encodés pour ne pas gêner la lecture de l’URL par le navigateur.
Les caractères dans une URL suivent la norme ASCII. Ainsi les caractères non standards doivent être encodés. L’encodage est défini en commençant par % suivi de 2 chiffres hexadécimal. Par exemple un espace sera encodé %20.
L’URL » http://www.google.fr?test=c%27est%20un%20test » correspond à l’encodage de » http://www.google.fr/?test=c’est un test «
Caractère special | Encodage |
espace | %20 |
: | %3A |
/ | %2F |
? | %3F |
& | %26 |
= | %3D |
# | %23 |
% | %25 |
é | %EA |
Et dans le cadre de redirections si on souhaite que les paramètres restent encodés, il faut alors procéder à un double encodage, en d’autres mots encoder le signe « % ».
Ainsi, l’encodage pour l’espace « %20 » sera encodé ainsi « %2520 » (%25correspondant au caractère %)
%2520 sera lu comme %2520 dans la premiere URL, puis avec la redirection il sera lu comme %20 dans la seconde URL. Et après la deuxieme redirection, il sera lu comme un espace.
Attention, cet encodage est à différencier d’autres normes d’encodages qui sont plus ou moins supporté par tous les navigateurs et serveurs.
Par exemple, le caractère « é » sera encodé différemment selon les normes :
ISO = é
ASCII = %E9
UTF-8 = é
Pour + d’infos :