Problema Unicode Json Encode en PHP
Frecuentes
Visto 257 equipos
1
en mi base de datos, tiene algún carácter Unicode y cuando yo:
$result=mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
$response[] = $row;
}
echo json_encode($response);
El resultado es
[{
"id": "151",
"titlenews": "iPad2 ? iPhone Mini ????????????? ???????????????? Samsung Galaxy Tab",
"photo": "ipad_1294990020.jpg"
}, {
"id": "153",
"titlenews": "???????????????????????? iPhone 5 ??????????????????? Apple",
"photo": "iphone-5_1294996201.jpg"
}, {
"id": "154",
"titlenews": "Android ??????????????????????????????????? ????????????????????????????????????????????????????? 2010",
"photo": "android_1295234852.jpg"
}]
¿Por qué tiene "?", Debe codificar para cualquier carácter especial que represente el Unicode.
Agradezcan
2 Respuestas
0
Esto es lo que uso
function myencode(&$item,$key)
{
$item=utf8_encode($item);
}
function my_json_encode($arr)
{
if(is_array($arr))
{
array_walk_recursive($arr,myencode);
return json_encode($arr);
}
else
{
return json_encode(array());
}
}
Y luego a decodificar
function my_json_decode($json)
{
return json_decode(safeJSON_chars(stripslashes($json)),TRUE);
}
Respondido 31 Jul 12, 15:07
Para mi problema, como comentó @jon, necesito agregar mysql_set_charset("utf8", $con) y ahora funciona bien - dicevortana
0
Solución en comentarios (por Savartona):
mysql_set_charset("utf8", $con);
Respondido 31 Jul 12, 15:07
-1 porque: a) Quiere generar JSON, por lo que obviamente no puede usar un <meta>
etiqueta (un encabezado HTTP podría hacer el truco); b) No hay absolutamente ninguna indicación de que el problema sea del cliente; c) Incluso si nada de esto fuera cierto, 8859-1 no sería el juego de caracteres correcto porque json_encode
devuelve UTF-8. - Jon
Al agregar mysql_set_charset("utf8", $con) ahora funciona bien, gracias a todos, a - dicevortana
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php json or haz tu propia pregunta.
¿Envió los encabezados de juegos de caracteres apropiados? - Waleed Khan
Pasado a través jsbeautifier.org para que sea más fácil de leer... - Michael Berkowski
lo siento, realmente no sé acerca de los encabezados de juegos de caracteres, ¿qué es eso? ¿Necesitamos agregar algo más? gracias - sayvortana
@sayvortana:
mysql_set_charset
. Además: la extensión mysql está en desuso. Utilice mysqli o PDO en su lugar. - Jon