J'ai lu tous les articles sur le sujet mais je ne pense pas avoir trouvé de réponse à ma question, ça me rend fou. J'ai un couple de fichiers php, un stocke des données dans mySQL db, un autre lit ces données: je reçois des données du monde entier et il me semble que je réussis à stocker le caractère asiatique d'une manière correcte, mais quand J'essaie de lire ces données, je ne peux pas récupérer ces caractères.Comment lire les caractères asiatiques (japonais, chinois) après json_encode en PHP
Comme beaucoup d'autres utilisateurs j'ai eu ?? au lieu des caractères corrects.
Haut de mes fichiers PHP je me suis:
header('Content-Type: application/json; charset=utf-8');
puis
mysql_query("SET CHARACTER SET utf8", $link);
mysql_query("SET NAMES 'utf8'", $link);
puis
$fab[] = array_map(utf8_encode,$array);
ici si je print_r ($fab)
j'ai perdu :-(caractères asiatic
Puis w poule je fais:
$json_string = json_encode($fab); //originale
Ce que je reçois est "??"
.
Quelle est la bonne façon de récupérer les bons caractères? La chaîne JSON est ensuite transmise à un client iPhone.
Toute suggestion ou aide serait grandement appréciée.
Merci de toute façon, Fabrizio
Ok, d'abord merci, puis j'ai déplacé le array_map mais j'ai eu le même résultat: dans mes tests, ce que j'ai obtenu est parfois "??" et d'autres fois le code hexadécimal, mais jamais de caractères asiatiques :( – Fabrizio
Si vous obtenez quelque chose comme \ uxxxx (où xx sont représentés par des nombres hexadécimaux), l'encodage est correct, les caractères UTF et Unicode DOIVENT être encodés de cette façon. chaîne dans un objet JavaScript (par exempleavec eval (jsonString) et ensuite imprimer le contenu des champs qu'il devrait imprimer en caractères asiatiques – Tseng
Si l'encodage est correct je suppose que j'ai besoin de décoder le côté client (sur l'application iPhone), est-ce correct? Quoi qu'il en soit grand merci pour aider. – Fabrizio