PHP

Json_encode и кириллица

Столкнулся с такой проблемой, что json_encode при кодировании символов кириллицы преобразует её в 16-тиричный вид.

Например, массив вида:
Array(
 [0] => Array(
    [id] => 5
    [name] => Россия
  )
 [1] => Array(
    [id] => 16
    [name] => Китай
  )
 [2] => Array(
      [id] => 23
      [name] => Япония
    )
)

после обработки функцией json_encode, принимает вид:
"[{"id":"5","name":"\u0412\u0438\u043a\u0442\u043e\u0440\u0438\u044f"},{"id":"16","name":"\u0417\u0430\u043f\u0430\u0434\u043d\u0430\u044f \u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f"},{"id":"23","name":"\u041a\u0438\u043d\u0441\u043b\u0435\u043d\u0434"}]"

Вроде ничего страшного, но данные в таком виде расходуют лишний трафик, что особенно критично если вам нужно быстро обрабатывать ajax запросы

Для приведения строк к нормальному виду, есть следующее решение:
preg_replace_callback(
  '/\\\u([0-9a-fA-F]{4})/',
  create_function('$match', 'return mb_convert_encoding("&#" . intval($match[1], 16) . ";", "UTF-8", "HTML-ENTITIES");'),
json_encode($region_list)
)

В результате получим следующий json:
[{"id":"5","name":"Россия"},{"id":"16","name":"Китай"},{"id":"23","name":"Япония"}]
Похожие новости:
Добавлено: 12 Сентября 2013 10:53:55 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...