Сведения о вопросе

Codeliver

07:54, 13th August, 2020

Теги

PHP   JSON    

json_encode в PHP: разрастание данных

Просмотров: 266   Ответов: 4

В PHP есть встроенные средства преобразования данных в json. Рассмотрим пример:

echo json_encode(iconv('cp1251', 'utf-8', 'тест'));

Он вернет "\ u0442\ u0435\ u0441\ u0442" (пробелы дабы не искушать парсер) — это 26 байтов, а вовсе не 10, как хотелось бы.

Как же так?



  Сведения об ответе

fo_I_K

21:06, 12th August, 2020

Эммм. В чем проблема, господа? Уверены в кодировке — вперед)

php -r 'var_dump(json_encode(«тест»));'
string(26) ""\u0442\u0435\u0441\u0442""

php -r 'var_dump(json_encode(«тест», JSON_UNESCAPED_UNICODE));'
string(10) "«тест»"


  Сведения об ответе

PIRLO

05:42, 29th August, 2020

Было уже в q& про это. Что делать? Смириться и включить gzip.


  Сведения об ответе

ASER

00:12, 5th August, 2020

Использовать самопальный json::encode — там кода на 20 строк.
И даже кормить его cp1251 без конверта.
У таких решение только один минус — работают в сотни раз встроенного решения.


  Сведения об ответе

SSESION

05:53, 1st August, 2020

Такое кодирование нелатинских символов является, так сказать, единственным надёжным способом гарантированно точного представления таких символов вне зависимости от используемой на веб-странице кодировки. Но жаль, конечно, что в json_encode() нет параметра, позволяющего отключить такое кодирование, если кодировка страницы и JSON-данных заведомо совпадает.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться