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