¿Alguna forma de devolver PHP 'json encode' con encode UTF-8 y no Unicode?
¿Alguna forma de devolver PHP json_encode
con codificar UTF-8 y no Unicode?
$arr=array('a'=>'á');
echo json_encode($arr);
mb_internal_encoding('UTF-8');
y $arr=array_map('utf8_encode',$arr);
no lo arregla.
Resultado: {"a":"\u00e1"}
Resultado previsto: {"a":"á"}
5 answers
{"a":"\u00e1"}
y {"a":"á"}
son diferentes formas de escribir el mismo documento JSON; El decodificador JSON decodificará el escape unicode.
En php 5.4+, php json_encode
tiene la opción JSON_UNESCAPED_UNICODE
para la salida normal. En versiones anteriores de php, puede desplegar su propio codificador JSON que no codifica caracteres que no sean ASCII, o usar el codificador JSON de Pear y eliminar la línea 349 a 433.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-31 14:51:26
Esta función se encuentra aquí , funciona bien para mí
function jsonRemoveUnicodeSequences($struct) {
return preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct));
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-03 14:07:06
Resolví mi problema haciendo esto:
- El.el archivo php está codificado en ANSI. En este archivo es la función para crear el .archivo json.
- Utilizo
json_encode($array, JSON_UNESCAPED_UNICODE)
para codificar los datos;
El resultado es a .archivo json codificado en ANSI como UTF-8.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-20 17:58:53
Use JSON_UNESCAPED_UNICODE
dentro de json_encode()
si su versión de php >=5.4.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-23 05:18:31
Solo usa esto,
utf8_encode($string);
Tienes que reemplazar tu $arr
con $string
.
Creo que funcionará...prueba esto.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-28 07:51:33