U041d что за кодировка
json_encode в PHP превращает кирилицу в \u041D коды
В несколько более ранних версиях языка PHP (где JSON_UNESCAPED_UNICODE ещё нет) успешно срабатывает вот такая штука:
И применяют её при выводе JSON вот таким образом:
OnYourLips, смысл в том, что серверов много, админов — мало, и обновление не запланировано. а поддерживать мультибайт кодировки надо сейчас. Архитектор проекта не знал, о том что такая проблема возникнет, да и я сам не знал пока не наткнулся на неё.
Решение котороя я использую:
Собственно, «исправлять» не обязательно (хотя в плане перфекционизма я вас хорошо понимаю). Это легитимные JS-строки, в браузере отображаются корректно. Объём данных, правда, больше. Но, с другой стороны, Gzip-сжатием этот фактор минимизируется. 😉
Можно ещё делать так:
Тогда в свежих версиях PHP JSON-код будет наиболее оптимальным по объёму, а в более старых — всего лишь несколько менее оптимальным.
Как получить русский текст из json на Python?
Пытаюсь распарсить json ответ на python
в ответе есть русские слова, но они закодированы
Собственно вопрос, как из «\u041e\u0434\u0435\u0440\u0436\u0430\u043d\u043e» получить «Одержано»? Потому что даже эти символы питон не хочет выводить, выдает ошибку
Пробовал декодить и энкодить по всякому, ничего не помогает((
Простой 5 комментариев
json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
Не надо там ничего энкодить и декодить.
В ответе текст в юникоде и парсится функцией `json.loads` адекватно.
Проблема скорее всего у вас из-за кодировки в консоли винды. там какая-нибудь однобайтовая кодировка вроде cp1251 или cp866.
При попытке напечатать юникод в этом терминале вы получаете ошибку из-за того, что при автоматическом преобразовании из юникода в кодировку консоли питон пытается взять кодек по умолчанию, который, конечно ‘ascii’.
Винда такая винда со своим беспощадным терминалом и кодировками по умолчанию.
Но вы можете напечатать этот текст, в нём нет непечатных символов для однобайтовой кодировки. Попробуйте так:
В любом случае, печатая или сохраняя что-то в файл вы должны понимать, что текст нужно закодировать в кодировку. Это может произойти неявно (как в ашем случае) но при попытке закодировать в кодировку по умолчанию (ascii) не каждый символ в ней можно представить. В ASCII всего 127 символов. Получилась закономерная ошибка.
У потоков стандартного ввода/вывода есть атрибут encoding:
В вашем случае будет либо None, если вывод перенаправлен в файл,
либо ‘cp1251’, либо ‘cp866’ ну или ещё что-нибудь эдакое.
Если не None, то в эту кодировку можно постараться заэнкодить вашу строку. По-прежнему некоторые символы могут не конвертнуться (не в вашем случае), их можно игнорировать специальным аргументом метода encode.
Декoдировать текст \u0xxx онлайн
Нередко Вам в работе встречаются строки типа \u041d\u043e\u0432\u043e\u0435 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 или %u0420%u0435%u0437%u0443%u043B%u044C%u0442%u0430%u0442, закодированные особым методом.
В интернете очень много ссылок на подобные декодеры и мы тоже не останемся в стороне.
Этот метод называется URL кодирование
Естественно сейчас URL кодирование может использоваться не только в записях URL, но и передачи произвольного текста.
Соответствия кодов и символа показано на таблице ниже( ISO 8859-5)
Под каждым символом написано трехзначное число которое и отображается в закодированном сообщении например ё код 451 значит при кодировании этой буквы мы получим следующую строку \u0451
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8. | PAD 80 | HOP 81 | BPH 82 | NBH 83 | IND 84 | NEL 85 | SSA 86 | ESA 87 | HTS 88 | HTJ 89 | VTS 8A | PLD 8B | PLU 8C | RI 8D | SS2 8E | SS3 8F |
9. | DCS 90 | PU1 91 | PU2 92 | STS 93 | CCH 94 | MW 95 | SPA 96 | EPA 97 | SOS 98 | SGCI 99 | SCI 9A | CSI 9B | ST 9C | OSC 9D | PM 9E | APC 9F |
A. | A0 | Ё 401 | Ђ 402 | Ѓ 403 | Є 404 | Ѕ 405 | І 406 | Ї 407 | Ј 408 | Љ 409 | Њ 40A | Ћ 40B | Ќ 40C | SHY AD | Ў 40E | Џ 40F |
B. | А 410 | Б 411 | В 412 | Г 413 | Д 414 | Е 415 | Ж 416 | З 417 | И 418 | Й 419 | К 41A | Л 41B | М 41C | Н 41D | О 41E | П 41F |
C. | Р 420 | С 421 | Т 422 | У 423 | Ф 424 | Х 425 | Ц 426 | Ч 427 | Ш 428 | Щ 429 | Ъ 42A | Ы 42B | Ь 42C | Э 42D | Ю 42E | Я 42F |
D. | а 430 | б 431 | в 432 | г 433 | д 434 | е 435 | ж 436 | з 437 | и 438 | й 439 | к 43A | л 43B | м 43C | н 43D | о 43E | п 43F |
E. | р 440 | с 441 | т 442 | у 443 | ф 444 | х 445 | ц 446 | ч 447 | ш 448 | щ 449 | ъ 44A | ы 44B | ь 44C | э 44D | ю 44E | я 44F |
F. | № 2116 | ё 451 | ђ 452 | ѓ 453 | є 454 | ѕ 455 | і 456 | ї 457 | ј 458 | љ 459 | њ 45A | ћ 45B | ќ 45C | § A7 | ў 45E | џ 45F |
Наш бот будет преобразовывать зашифрованные сообщения в читаемый вид ( для русской кодировки)
jdecoder текст
разделитель может быть как символ % так и знак \
Примеры
Получили такой текст
расшируем его с помощью команды и получим ответ
«Как расшифровать кодировку iso-8859»
Исходный текст «\u041a\u0430\u043c\u0410\u0417»