Indovina casuale:json_encode
si aspetta dati codificati UTF-8 e mostrerà il comportamento che descrivi su qualsiasi input non UTF-8, non ASCII. È probabile che i dati che stai ricevendo dal database siano codificati in Latin-1.
O imposta la connessione al database su utf8
per ricevere i dati codificati UTF-8 direttamente dal database (vedi UTF-8 fino in fondo ), oppure usa (e odio dirlo, perché questa funzione viene abusata così spesso che non è nemmeno divertente, ma qui è applicata correttamente) utf8_encode
su tutti i dati che ottieni dal database per convertirlo da Latin-1 a UTF-8.
Quindi o:
// 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);
...
oppure:
$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);
...