Encodage des appels Ajax
Avec Ajax, un problème supplémentaire surgit, car il faut encoder nous-mêmes les paramètres
transmis, XMLHttpRequest n’encodant pas lui-même les paramètres au format
application/x-www-form-urlencoded spécifié par HTTP. Or, nous n’avons en JavaScript
aucune fonction à notre disposition pour faire cela. À la place, nous utilisons la fonction
encodeURIComponent, qui transforme une chaîne en remplaçant ses caractères non ASCII
par la séquence de leurs codes UTF-8. Par exemple, « é » est remplacé par %C3%A9 et
« oe » par %C3%93.
Si certains prétendent qu’Ajax « travaille en UTF-8 », cette affirmation semble bien
hasardeuse. Si nous n’encodons pas nous-mêmes les caractères, le résultat transmis au
serveur diffère d’un navigateur à un autre, IE ne transmettant pas en UTF-8. Par ailleurs,
lorsque la réponse arrive sur le client, JavaScript se débrouille pour l’interpréter correctement,
mais à la condition expresse que l’encodage soit défini dans l’en-tête de réponse
Content-Type.Si nous encodons correctement les paramètres de la requête, grâce à encodeURIComponent,
prenons bien garde que la valeur récupérée sur le serveur est encodée en UTF-8. Si tout
notre système ne fonctionne pas en UTF-8, il nous faut alors décoder.
Partager