Problemas de codificación con JSON y la base de datos
Resulta que hoy en el curro tenía un problema con las tildes a la hora de recuperar una cadena formateada en JSON almacenada en la base de datos, al obtener la cadena y descodificarla con json_decode, las tildes no se mostraban, ejemplo:
Resultado de una array asociativo codificado con json_encode:
$str_json = json_encode( array( ‘Sal_nombre’ => ‘Conciertos Radio 3 Grabación’ ) );
$str_json = ‘{“Sal_nombre”:”Conciertos Radio 3 Grabaci\u00f3n”}’
Resultado al descodificar:
$obj_json = json_decode( $str_json );
$obj_json->Sal_nombre = ‘Conciertos Radio 3 Grabaciu00f3n’;
La solución:
Pedir HALLUDA URGENTE a mi compañero de batallas Hermann
La solución fue fácil (para Hermann jeje) tan solo tenía que pasar un mysql_escape_string a la cadena codificada antes de hacer el update a la base de datos:
$str_json = mysql_escape_string( json_encode( $str_json ) );
$str_json = ‘{\”Sal_nombre\”:\”Conciertos Radio 3 Grabaci\\u00f3n\”}’;
// ya se puede hacer update
Para recuperar de nuevo el valor de la cadena codificada:
$obj_json = json_decode( stripslashes( $str_json ) );
$obj_json->Sal_nombre = ‘Conciertos Radio 3 Grabación’;
Nota del programador:
Es imprescindible hacer un stripslashes antes de json_decode o la cadena no se podrá descodificar correctamente.
Dedico el post a:
Hermann Kässer por ayudarme con este problema y en muchos más y también a Laura Jerónimo que me dijo que echaba en falta artículos de php.
P.D. si buscan más articulos php, les recomiendo que se pasen por el blog de Daniel García de minube.com
Espero que eso de HALLUDA haya sido una broma o algo¡
@Omar: Estaba pensando lo mismo :p
me ha dolido los ojos al leer eso de HALLUDA y no he podido seguir leyendo el articulo.
Saludos
Muchas gracias, en serio sirvio demasiado este post, llevaba horas intentando comprender pq mi Json Decode no funcaba….. de ahora en adelante en nombre tuyo seguire pidiendo halluda como lo haces tu…
hey gracias!!! me funcionó
Hola Miguel, de antemano gracias por el post (no me fue útil, más veo que a otros les ha servido), a pesar de intentar lo aquí explicado mi problema no se solucionó, más dejo un link que realmente me fue útil, por si a alguno le sucede lo mismo que a mi:
http://www.forosdelweb.com/f18/problema-con-json_encode-con-caracteres-especiales-664631/