Ir al contenido principal

Tips y enlaces de la semana

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:

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