Slumpmässig gissning:json_encode
förväntar sig UTF-8-kodad data och kommer att uppvisa det beteende du beskriver på alla icke-UTF-8, icke-ASCII-ingång. Datan du får från databasen är sannolikt Latin-1-kodad.
Ställ antingen in din databasanslutning till utf8
för att ta emot UTF-8-kodad data direkt från databasen (se UTF-8 hela vägen igenom ), eller använd (och jag hatar att säga detta, eftersom den här funktionen missbrukas så ofta att den inte ens är rolig, men den är korrekt tillämpad här) utf8_encode
på all data du får från databasen för att konvertera den från Latin-1 till UTF-8.
Så antingen:
// 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);
...
eller:
$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);
...