json_encode в PHP превращает кирилицу в \u041D коды

Собственно сабж. Как исправить такое поведение?
  • Вопрос задан
  • 18730 просмотров
Пригласить эксперта
Ответы на вопрос 3
nazarpc
@nazarpc
Open Source enthusiast
json_encode($str, JSON_UNESCAPED_UNICODE);
Ответ написан
MTonly
@MTonly
Веб-разработчик с 2002 года
Собственно, «исправлять» не обязательно (хотя в плане перфекционизма я вас хорошо понимаю). Это легитимные JS-строки, в браузере отображаются корректно. Объём данных, правда, больше. Но, с другой стороны, Gzip-сжатием этот фактор минимизируется. ;-)

Можно ещё делать так:

$json = defined('JSON_UNESCAPED_UNICODE')
      ? json_encode($data, JSON_UNESCAPED_UNICODE)
      : json_encode($data);

Тогда в свежих версиях PHP JSON-код будет наиболее оптимальным по объёму, а в более старых — всего лишь несколько менее оптимальным.
Ответ написан
dewil
@dewil
кратко о себе
Для PHP 5.3 и ниже, можно так
preg_replace_callback('/\\\u([01-9a-fA-F]{4})/', 'prepareUTF8', json_encode($array))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы