2012-02-07 7 views
0

J'ai quelques tables qui sont réglées sur utf8_general_ci et j'utilise le pilote mysqli de PHP, avec charset réglé sur 'utf8'. Je le default_charset également mis à UTF-8PHP et MySQLi UTF8

Cependant, les caractères sont remplacés par « \u0101l »

Toute idée de ce que cela est ou comment y remédier? Avant, je n'avais pas mysqli en utilisant utf8 et cela montrait juste un point d'interrogation, pas un point d'interrogation diamantifère - juste un "?"

Merci!

+0

MySQL ne AFAIK jamais JSON encoder vos personnages. S'il vous plaît déboguer étape par étape à quel point exactement cela se passe. – deceze

+0

Qu'en est-il du codage de votre fichier PHP? Est-ce aussi l'UTF-8? –

Répondre

1

Je suis certain que vous utilisez "htmlentities()" ou "html_entity_decode()" quelque part. Le problème est que htmlentities() essaie toujours d'interpréter son entrée à ISO-8859-1, alors que html_entity_decode() est maintenant par défaut à UTF-8. Solution: Si vous utilisez l'une des fonctions énumérées ci-dessus, spécifiez explicitement le type d'encodage à chaque fois. J'ai eu ce problème et un collègue de la mine ont écrit un article sur le sujet aussi http://lab.clearpixel.com.au/2012/01/html-entity-character-conversion-in-php/

J'espère que cela aide