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. 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.

Catégories : Développement

3 commentaires

Erwin · 19 novembre 2006 à 18:07

Ces caractères ne sont pas inclus dans les spécifications ISO–8859–1 mais dans celle de l’ISO–8859–15 (sauf ‰ et ™ que je ne retrouve pas non plus).

http://alis.isoc.org/codage/iso8859/jeuxiso.htm

Fabien · 19 novembre 2006 à 19:52

Peut–être dans l’ISO 10646 et/ou 8879.

Ma page utilise l’ISO 8859–1 donc si je comprends bien, ces 21 caractères ne devraient pas s’afficher ?

Erwin · 19 novembre 2006 à 19:58

Si on respectait les choses à la lettre, les caractères non–ASCII ne faisant pas partie du jeu de caractère utilisé ne devraient pas être utilisés théoriquement. Maintenant il y a quand même une bonne marge, on peut bien inclure le symbole € alors qu’il ne fait pas partie de l’ISO–8859–1…

Laisser un commentaire

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

:D :) :o :eek: :( :lol: :wink: :arrow: :idea: :?: :!: :evil: :p

Articles similaires

Développement

Installer et utiliser NodeJS et le module Less sur Mac OS X

Connaissez-vous LESS ? Il s’agit d’une sur-couche de CSS apportant son lot d’améliorations pour faciliter l’écriture de feuille de styles. LESS vous permettra par exemple de définir des fonctions ou des variables que vous pourrez Lire la suite…

Développement

Installer Apache 2, MySQL 5 et PHP 5.3 sur Mac OS 10.7 Lion avec MacPort

Bien que Apache et PHP soient pré-installés sur Mac OS X, j’évite depuis plusieurs années de les utiliser. Au départ pour un problème de compilation d’une extension PHP, aujourd’hui pour ne plus être dépendant d’Apple Lire la suite…

Développement

Utiliser l’extension Taggable de Doctrine avec Symfony 1.3/1.4

Jusqu’à symfony 1.2, si vous vouliez ajouter facilement de nouvelles fonctionnalités au framework PHP5 il fallait se diriger vers son importante base de plugins. Avec symfony 1.3 et 1.4, bien sûr vous pouvez toujours compter Lire la suite…