Suposição aleatória:
json_encode
espera dados codificados em UTF-8 e exibirá o comportamento que você descreve em qualquer entrada não UTF-8 e não ASCII. Os dados que você está obtendo do banco de dados provavelmente são codificados em Latin-1. Ou defina sua conexão de banco de dados para
utf8
para receber dados codificados em UTF-8 diretamente do banco de dados (consulte UTF-8 até o fim ), ou use (e eu odeio dizer isso, porque essa função é tão frequentemente abusada que nem é engraçada, mas é aplicada corretamente aqui) utf8_encode
em todos os dados obtidos do banco de dados para convertê-los de Latin-1 para UTF-8. Então ou:
// 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);
...
ou:
$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);
...