Devinette aléatoire :json_encode
attend des données encodées en UTF-8 et présentera le comportement que vous décrivez sur toute entrée non UTF-8 et non ASCII. Les données que vous obtenez de la base de données sont probablement encodées en Latin-1.
Soit définir votre connexion à la base de données sur utf8
pour recevoir des données encodées en UTF-8 directement à partir de la base de données (voir UTF-8 tout au long ), ou utilisez (et je déteste dire ça, parce que cette fonction est si souvent abusée que ce n'est même pas drôle, mais elle est correctement appliquée ici) utf8_encode
sur toutes les données que vous obtenez de la base de données pour les convertir de Latin-1 en UTF-8.
Soit :
// set the connection charset
mysql_set_charset('utf8');
$result = mysql_query("SELECT post_status, post_title FROM wp_posts");
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data['posts'][] = $row;
}
$json_string = json_encode($data);
...
ou :
$result = mysql_query("SELECT post_status, post_title FROM wp_posts");
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$row = array_map('utf8_encode', $row);
$data['posts'][] = $row;
}
$json_string = json_encode($data);
...