Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden Sie PHP, um MySQL-Werte in die JSON-Datei zu kopieren

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);

...