Comment encoder les caractères spéciaux dans les URLs ?


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 specialEncodage
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 = &eacute

Pour + d’infos :

- La liste complète des caractères encodés

Comment encoder les caractères spéciaux dans les URLs ?
  • 5.00 / 5 5
1 vote, 5.00 avg. rating (96% score)

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>