保存到文件时编码丢失

时间:2012-04-02 17:18:02

标签: python encoding

我有一个包含词典的列表。每个字典都有一个属性description,它应该包含一个字符串。当我把这个字符串放入字典时,我知道它具有正确的编码(当在终端中打印时,它看起来很好)。此外,如果我在设置后打印description的值,则字符串看起来仍然很好。 然后我使用JSONEncoder.encode(myList)并使用以下代码将此JSON字符串保存到文件中:

file_obj = open("file.txt", "w")
file_obj.write(text)
file_obj.close()

然后,当我打开文件时,字符显示错误。例如。 \u00e5\u00f8d\u00e6

有没有人知道为什么会这样,以及如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

JSON编码旨在创建一个可以通过JSON解码加载的字符串,这正是它正在做的事情。 “打开文件时的样子”与“通过JSON解码器运行它会是什么样子”不同 - JSON解码器也会解码\u####转义。

如果您希望文件包含原始unicode,而不是\u####转义符,请不要使用JSON编码器;这不是它的设计目标。

答案 1 :(得分:2)

如果您通过json

unicode将生成ensure_ascii=False个。然后,您可以使用codecs.open()在保存时正确编码。