Suposición aleatoria:json_encode
espera datos codificados en UTF-8 y exhibirá el comportamiento que usted describe en cualquier entrada que no sea UTF-8 ni ASCII. Es probable que los datos que obtiene de la base de datos estén codificados en Latin-1.
Establece la conexión de tu base de datos a utf8
para recibir datos codificados en UTF-8 directamente desde la base de datos (consulte UTF-8 completo ), o use (y odio decir esto, porque se abusa de esta función con tanta frecuencia que ni siquiera es divertido, pero se aplica correctamente aquí) utf8_encode
en todos los datos que obtiene de la base de datos para convertirlos de Latin-1 a UTF-8.
Así que:
// 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);
...
o:
$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);
...