AJAX et les caractères spéciaux
C'est l'un des plus gros problèmes d'AJAX, les caractères spéciaux. Si votre requête n'utilise pas le même encodage que votre page, tous les caractères spéciaux deviennent des points d'interrogation.
J'avais déjà passé pas mal de temps sur ce problème mais hier soir alors que je mettais ma bdd à jour (pour être compatible avec la nouvelle version de FabCMS), je me suis aperçu que certains caractères avaient été remplacés par le fameux point d'interrogation...
Ce matin, après plusieurs heures de recherches, je suis arrivé à la source du problème. Pour convertir les caractères en UTF-8 (le jeu par défaut de l'objet XMLHttpRequest) j'utilise la fonction php utf8_decode. Or cette fonction ne décode pas tous les caractères mais uniquement ceux qui sont dans le jeu de caractères ISO-8859-1...
Au finale, j'ai trouvé 21 caractères ASCII qui n'étaient pas convertis (dont notamment Œ, œ, ‰, € et ™). Pour corriger ça, j'ai simplement faire un str_replace en attendant de pouvoir vraiment regarder de plus près les modules php mbstring et iconv.
3 Commentaires
Commentaires recommandés