Python 在写入文件之前,是否必须对unicode变量进行编码?

Python 在写入文件之前,是否必须对unicode变量进行编码?,python,python-unicode,Python,Python Unicode,几天前我读了“Unicdoe痛苦”的文章。我会记住“Unicode三明治”。 现在我要处理一些中文,我有一个清单 chinese = [u'中文', u'你好'] 在写入文件之前是否需要进行编码 add_line_break = [word + u'\n' for word in chinese] encoded_chinese = [word.encode('utf-8') for word in add_line_break] with open('filename', 'wb') as

几天前我读了“Unicdoe痛苦”的文章。我会记住“Unicode三明治”。

现在我要处理一些中文,我有一个清单

chinese = [u'中文', u'你好']
在写入文件之前是否需要进行编码

add_line_break = [word + u'\n' for word in chinese]
encoded_chinese = [word.encode('utf-8') for word in add_line_break]
with open('filename', 'wb') as f:
    f.writelines(encoded_chinese)
不知怎的,我在蟒蛇2中发现了这一点。我可以这样做:

chinese = ['中文', '你好']
with open('filename', 'wb') as f:
    f.writelines(chinese)

不涉及任何事项:D

您不必这样做,您可以使用
io
codecs
以编码方式打开文件

import io
with io.open('file.txt', 'w', encoding='utf-8') as f:
    f.write(u'你好')
编解码器。open
具有相同的语法。

在python3中

with open('file.txt, 'w', encoding='utf-8') as f:
    f.write('你好')

就可以了。

对于读取/写入文件,使用函数代替编码-当一切都正常时,
str
(Python2
unicode
)类型将不再需要在应用程序中手动管理
bytes
(Python2
unicode
)类型。更好的方法是使用
io.open
。它与Python3的
open
兼容,并有助于以后的移植。是的。我发现我也可以在python2中做到这一点。那我们为什么要在程序中使用unicode类型呢?为什么不到处声明字节文本?