Zufällige Vermutung:json_encode
erwartet UTF-8-codierte Daten und zeigt das von Ihnen beschriebene Verhalten bei allen Nicht-UTF-8- und Nicht-ASCII-Eingaben. Die Daten, die Sie aus der Datenbank erhalten, sind wahrscheinlich mit Latin-1 kodiert.
Setzen Sie entweder Ihre Datenbankverbindung auf utf8
um UTF-8-codierte Daten direkt von der Datenbank zu erhalten (siehe UTF-8 vollständig ), oder verwenden Sie (und ich sage das nur ungern, weil diese Funktion so oft missbraucht wird, dass es nicht einmal lustig ist, aber hier richtig angewendet wird) utf8_encode
auf alle Daten, die Sie aus der Datenbank erhalten, um sie von Latin-1 in UTF-8 zu konvertieren.
Also entweder:
// 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);
...
oder:
$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);
...