Đoán ngẫu nhiên:json_encode
mong đợi dữ liệu được mã hóa UTF-8 và sẽ thể hiện hành vi mà bạn mô tả trên bất kỳ đầu vào nào không phải UTF-8, không phải ASCII. Dữ liệu bạn nhận được từ cơ sở dữ liệu có thể được mã hóa Latin-1.
Đặt kết nối cơ sở dữ liệu của bạn thành utf8
để nhận dữ liệu được mã hóa UTF-8 trực tiếp từ cơ sở dữ liệu (xem UTF-8 thông qua ), hoặc sử dụng (và tôi ghét phải nói điều này, bởi vì chức năng này thường bị lạm dụng, nó thậm chí không vui, nhưng nó được áp dụng chính xác ở đây) utf8_encode
trên tất cả dữ liệu bạn nhận được từ cơ sở dữ liệu để chuyển đổi nó từ Latin-1 sang UTF-8.
Vì vậy, một trong hai:
// 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);
...
hoặc:
$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);
...