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

Собственно сабж. Как исправить такое поведение?
  • Вопрос задан
  • 14622 просмотра
Пригласить эксперта
Ответы на вопрос 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))
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SaveTime Москва
от 100 000 руб.
Teamlead Ставрополь
от 25 000 до 50 000 руб.
Digital Clouds Новосибирск
от 60 000 руб.
09 дек. 2019, в 20:26
2500 руб./за проект
09 дек. 2019, в 20:13
5000 руб./за проект
09 дек. 2019, в 19:33
500 руб./за проект