alexjet73
@alexjet73

Как сохранить объект с кирилицей в файл формата JSON на Python?

res = json.dumps(rObj, ensure_ascii=False)
file = open('res.json', 'w')
file.write(res)
file.close()

По итогу в файле вот такой текст вместо кириллицы "íåæèëîãî"
  • Вопрос задан
  • 309 просмотров
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Спорим у вас винда?
Прочитайте спецификацию функции open. В частности про параметр encoding.
Когда записываете текст в виде байтов (а в файлах он именно так хранится), то нужно понимать какой кодировкой вы кодируете не ascii-символы.
Вы явно не указываете кодировку, поэтому выбирается кодировка по умолчанию. Посмотреть что у вас там по умолчанию можно вот этой фунцией sys.getdefaultencoding()
Именно в такой кодировке нужно открывать ваш файл на чтение, чтобы увидеть там русские буквы.
В винде у вас скорее всего одна из двух кодировок там может быть. И она разная в зависимости от того в консоли вы запустили свою прогу, или в IDE. А ещё подстава - в винде по умолчанию однобайтовые кодировки, поэтому не все символы можно в них представить!
С этим в линуксе гораpдо лучше. По умолчани везде utf-8.

Вот, кстати, можете проверить что получится для понятности:
> 'íåæèëîãî'.encode('latin1').decode('cp1251')
'нежилого'
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
TalismanChet
@TalismanChet
Лицо зла
Вариант лучше: разберитесь с кодировками
Вариант хуже: используйте кодировку(??) для URL, например: %20%32%8С%24. Так и храните все символы. Тогда у вас будет универсальный способ хранить все символы. Но первый способ лучше.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы