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
    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