То, что вы видите, на 100% правильно.JSON допускает строки, которые содержат только символы ASCII и экранируют все «расширенные» символы как \u
+ код символа Unicode.
Когда вы или кто-либо еще проанализируете файл снова, появится правильная буква.На самом деле вам ничего не нужно делать.
Если вам абсолютно не нравится, как это выглядит, вам нужно написать файл JSON в формате UTF-8.Это тоже работает, но Python 2.7 open()
не дает вам выбора кодировки файлов (Python 3+ делает).
Вы можете использовать codecs.open()
, что позволяет легко обрабатывать UTF-8files:
import codecs
import json
d = {'test': u'Fors\xf8g'}
with codecs.open('da.json', 'w', encoding='utf8') as f:
json.dump(d, f, sort_keys=True, indent=4, ensure_ascii=False)
Так как json.dump()
отвечает за экранированные символы, мы должны сказать ему не делать этого с ensure_ascii=False
.