假设我在python中有以下示例
import json
In [46]: d = {'test': u'Fors\xf8g'}
In [47]: print(d['test'])
Forsøg
In [48]: with open('da.json', 'w') as f:
...: json.dump(d, f, sort_keys=True, indent=4)
...:
打开该json文件,我看到以下内容。
{
"test": "Fors\u00f8g"
}
但是我希望看到上面的印刷品带有适当的北欧字符。我该如何实现?
答案 0 :(得分:1)
您看到的是100%正确的。 JSON允许仅包含ASCII字符的字符串,并且将所有“扩展”字符转义为\u
+ Unicode字符代码。
当您或其他任何人再次解析文件时,将显示正确的字母。实际上,您无需执行任何操作。
如果您完全不喜欢它的外观,则需要将JSON文件编写为UTF-8。这也可以,但是Python 2.7的open()
不能为您提供文件编码选择(Python 3+可以)。
您可以使用codecs.open()
,它可以轻松处理UTF-8文件:
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
执行此操作。