Náhodný odhad:json_encode
očekává data zakódovaná v UTF-8 a bude vykazovat chování, které popisujete na jakémkoli vstupu, který není UTF-8 a ASCII. Data, která získáváte z databáze, jsou pravděpodobně zakódována v Latin-1.
Buď nastavte připojení k databázi na utf8
přijímat data v kódování UTF-8 přímo z databáze (viz UTF-8 až do konce ), nebo použijte (a nerad to říkám, protože tato funkce je tak často zneužívána, že to ani není vtipné, ale je zde správně použita) utf8_encode
na všech datech, která získáte z databáze, abyste je převedli z Latin-1 na UTF-8.
Takže buď:
// 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);
...
nebo:
$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);
...