Любой способ вернуть PHP `json_encode` с кодировкой UTF-8, а не Unicode?

Любой способ вернуть PHP json_encode с кодировкой UTF-8, а не Unicode?

 $arr=array('a'=>'á'); echo json_encode($arr); 

mb_internal_encoding('UTF-8'); и $arr=array_map('utf8_encode',$arr); не исправляет это.

Результат: {"a":"\u00e1"}

Ожидаемый результат: {"a":"á"}

Solutions Collecting From Web of "Любой способ вернуть PHP `json_encode` с кодировкой UTF-8, а не Unicode?"

{"a":"\u00e1"} и {"a":"á"} – это разные способы записи одного и того же документа JSON; Декодер JSON будет декодировать escape-код unicode.

В php 5.4+ в json_encode php есть опция JSON_UNESCAPED_UNICODE для простого вывода. В более старых версиях PHP вы можете развернуть свой собственный JSON-кодер, который не кодирует символы, отличные от ASCII, или использует JSON-кодер Pear и удаляет строки с 349 по 433.

Эта функция, найденная здесь , отлично работает для меня

 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)); } 

Я решил решить эту проблему:

  • Файл .php закодирован в ANSI. В этом файле есть функция для создания файла .json.
  • Я использую json_encode($array, JSON_UNESCAPED_UNICODE) для кодирования данных;

Результатом является файл .json, закодированный в ANSI как UTF-8.

Используйте JSON_UNESCAPED_UNICODE внутри json_encode() если ваша версия php> = 5.4.

просто используйте это,

 utf8_encode($string); 

вы должны заменить $arr на $string .

Я думаю, это сработает … попробуйте это.