answer_42 (answer_42) wrote,
answer_42
answer_42

Category:

json.dump() в utf-8

Записки туповатого программиста.

Полдня в грипозном угаре пытался сохранить json в utf-8.

Простой тест:

Делаем файлик в который пишем Санкт-Петербург, кодировка UTF-8.

Попробуем прочитать и записать тоже самое в другой файлик.
import codecs
d = open('test.txt','r')
dd = d.readlines()
d.close()

w = codecs.open('test2.txt','w','utf-8')
w.write(dd[0].decode('utf-8'))
w.close()

Все ок, все работает и все прекрасно. Теперь представим, что у вас строка это некий Json со вставками на кириллице. Если все делать точно также, используя w.write(json.dumps(somejsonhere)), он
1) упорно будет выдавать текст в cp1251, плюя на codecs.open('test2.txt','w','utf-8')
2) и Санкт-Петербург будет представлен так: \xd0\xa1\xd0\xb0\xd0\xbd\xd0\xba\xd1\x82-\xd0\x9f\xd0\xb5\xd1\x82\xd0\xb5\xd1\x80\xd0\xb1\xd1\x83\xd1\x80\xd0\xb3

Оказывается, это свойство json.dumps и это правильно, но чтобы таки была читабельная кириллица и utf-8, то надо так:
json.dumps(somejsonhere,ensure_ascii=False)
Tags: python, кодировки
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments