我有一个包含词典的列表。每个字典都有一个属性description
,它应该包含一个字符串。当我把这个字符串放入字典时,我知道它具有正确的编码(当在终端中打印时,它看起来很好)。此外,如果我在设置后打印description
的值,则字符串看起来仍然很好。
然后我使用JSONEncoder.encode(myList)
并使用以下代码将此JSON字符串保存到文件中:
file_obj = open("file.txt", "w")
file_obj.write(text)
file_obj.close()
然后,当我打开文件时,字符显示错误。例如。 \u00e5
,\u00f8d
和\u00e6
。
有没有人知道为什么会这样,以及如何解决这个问题?
答案 0 :(得分:3)
JSON编码旨在创建一个可以通过JSON解码加载的字符串,这正是它正在做的事情。 “打开文件时的样子”与“通过JSON解码器运行它会是什么样子”不同 - JSON解码器也会解码\u####
转义。
如果您希望文件包含原始unicode,而不是\u####
转义符,请不要使用JSON编码器;这不是它的设计目标。
答案 1 :(得分:2)
json
, unicode
将生成ensure_ascii=False
个。然后,您可以使用codecs.open()
在保存时正确编码。