Estoy haciendo una solicitud JsonP a un script php alojado en un sitio web que tengo. El script php obtiene resultados de DB y los devuelve como Json.

El problema es que la base de datos contiene caracteres hebreos y los obtengo como '??????' en la respuesta.

¿Alguna idea de cómo resolver esto?

Aquí está el código js:

$.getJSON("http://flyfish.co.il/appdiet?callback=?",function(data){
$('p').text(data[0].food_name);
});

Y el código php:

 <?php
header('Content-type: text/html; charset=UTF-8');
require_once 'config.php';

$mysqli = new mysqli(HOST,USERNAME,PASSWORD,DB_NAME);

$query = "SELECT * from mytable";

if ($result = $mysqli->query($query)) 
{
$data = array();
while ($row = $result->fetch_assoc()) { 
    $data[] = $row;     
}
echo $_GET['callback'].'('.json_encode($data).')';
}  
else {
echo $_GET['callback'].'('.$mysqli->error.')';
} 
$mysqli->close();
0
Tomer 5 jun. 2012 a las 22:28
1
header('Content-type: text/html; charset=UTF-8');? ¿Umm? texto / html ?!
 – 
Quentin
5 jun. 2012 a las 22:33
2
Esto no es JSON. Es JSON-P, por lo que el tipo MIME correcto es application/javascript.
 – 
Quentin
5 jun. 2012 a las 22:35
Hola, lo cambié pero no funcionó :(, también probé application / json sin éxito.
 – 
Tomer
6 jun. 2012 a las 12:00

1 respuesta

La mejor respuesta

Intente agregar un set names 'utf8'; antes de su declaración select.

1
Christopher Armstrong 5 jun. 2012 a las 22:30
Lo intenté, ahora obtengo: \ u05d0 \ u05e8 \ u05d8 \ u05d9 \ u05e9 \ u05d5 \ u05e7
 – 
Tomer
6 jun. 2012 a las 12:01
¡Leo hebreo y eso no es hebreo! No creo que haya una palabra en alemán tan larga :)
 – 
Tomer
6 jun. 2012 a las 12:25
Cuando convierto el JSON a texto, obtengo " ארטישוק"… eso no me parece demasiado largo.
 – 
Quentin
6 jun. 2012 a las 12:36
¿Qué quieres decir con "cuando convierto el JSON a texto"? ¿cómo lo conviertes?
 – 
Tomer
6 jun. 2012 a las 12:51