Tebakan acak:json_encode
mengharapkan data yang disandikan UTF-8 dan akan menunjukkan perilaku yang Anda jelaskan pada input non-UTF-8, non-ASCII. Data yang Anda peroleh dari database kemungkinan besar dikodekan dalam bahasa Latin-1.
Setel koneksi database Anda ke utf8
untuk menerima data yang disandikan UTF-8 langsung dari database (lihat UTF-8 sepenuhnya ), atau gunakan (dan saya benci mengatakan ini, karena fungsi ini sering disalahgunakan bahkan tidak lucu, tetapi diterapkan dengan benar di sini) utf8_encode
pada semua data yang Anda dapatkan dari database untuk mengonversinya dari Latin-1 ke UTF-8.
Jadi:
// 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);
...
atau:
$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);
...