¿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":"á"}

Author: hakre, 2011-07-21

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.

 66
Author: phihag,
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));
}
 29
Author: antoniom,
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.

 21
Author: Sheyla Fernandes,
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.

 7
Author: Lakin Mohapatra,
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.

 -4
Author: Ashish Tikarye,
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