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

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

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

Войти через центр авторизации
Похожие вопросы
Smart Медицина Москва
от 150 000 ₽
Spice IT Recruitment Москва
До 230 000 ₽
Playkot Санкт-Петербург
от 150 000 до 200 000 ₽
16 июл. 2020, в 15:44
20000 руб./за проект
16 июл. 2020, в 15:43
2000 руб./за проект