json_encode y problemas con acentos.
Según la documentación de la función json_encode, esta solo funciona con caracteres codificados en utf-8, así que si trabajamos con caracteres con otra codificación podemos convertirlos con la función utf8_encode. Asi:
Si lo que queremos es pasar un arreglo a json, debemos pasar cada item del arreglo a utf8 y para esto usaremos la función array_map, quedando de la siguiente manera:
Esta función está disponible desde la versión 5.2 de PHP, asi que si usas una versión anterior intentalo con la versión de json_encode y json_decode para PHP4
Este archivo se usa de la siguiente forma:
Sin embargo para no modificar las llamadas a las funciones que ya tengamos hechas, podemos agregar al final del archivo lo siguiente:
Luego solo bastaría escribir require_once('JSON.php'); al inicio de los archivos en que usemos la función y la tendríamos disponible en todas las versiones de PHP
Enlaces:
Facebook Connect desde el localhost
Según la documentación de la función json_encode, esta solo funciona con caracteres codificados en utf-8, así que si trabajamos con caracteres con otra codificación podemos convertirlos con la función utf8_encode. Asi:
json_encode(utf8_encode($dato));
Si lo que queremos es pasar un arreglo a json, debemos pasar cada item del arreglo a utf8 y para esto usaremos la función array_map, quedando de la siguiente manera:
json_encode(array_map("utf8_encode",$arreglo));
Esta función está disponible desde la versión 5.2 de PHP, asi que si usas una versión anterior intentalo con la versión de json_encode y json_decode para PHP4
Este archivo se usa de la siguiente forma:
// create a new instance of Services_JSON require_once('JSON.php'); $json = new Services_JSON(); // convert a complex value to JSON notation $value = array(1, 2, ‘foo’); $output = $json->encode($value); print($output); // accept incoming POST data $input = $GLOBALS['HTTP_RAW_POST_DATA']; $value = $json->decode($input);
Sin embargo para no modificar las llamadas a las funciones que ya tengamos hechas, podemos agregar al final del archivo lo siguiente:
if(!function_exists('json_encode')){ function json_encode($value){ $json = new Services_JSON(); return $json->encode($value); } } if(!function_exists('json_decode')){ function json_decode($value){ $json = new Services_JSON(); return $json->decode($value); } }
Luego solo bastaría escribir require_once('JSON.php'); al inicio de los archivos en que usemos la función y la tendríamos disponible en todas las versiones de PHP
Enlaces:
Facebook Connect desde el localhost
Comentarios
Publicar un comentario