使用Python编写UTF-8文本文件,Windows编辑器可以阅读

时间:2016-02-01 16:56:23

标签: python windows unicode utf-8 editor

我在Win 7上使用Python 3.4并遇到以下问题:

我想将多行unicode文本写入文本文件,用户可以使用标准Windows编辑器打开(我知道......),没有任何特殊说明。我已经发现这个编辑器显然需要一个BOM才能理解编码实际上是UTF-8:

with codecs.open(r'c:\configfile.txt', 'w', encoding='utf-8-sig') as cf:
        cf.write("""Test1
Test2 öäüß
Test3""")

现在我注意到,使用此代码,所有换行符都写为0x0a而不是0x0d 0x0a,Windows编辑器无法识别,因此它将所有内容显示在一行中。

长话短说:将多行unicode文本字符串写入可以使用Windows编辑器打开和编辑的文件的安全方法是什么?

2 个答案:

答案 0 :(得分:0)

我自己找到了一个解决方案......只需使用io.open而不是codecs.open,使用相同的参数修复换行符问题:

with io.open(r'c:\configfile.txt', 'w', encoding='utf-8-sig') as cf:
        cf.write("""Test1
Test2 öäüß
Test3""")

答案 1 :(得分:0)

使用Python 3,您只需使用

即可
with open(r'c:\configfile.txt', 'w', encoding='utf-8-sig') as cf:
    ...

将打开文件" text"模式。这将使用运行脚本的操作系统的正确行结束。

io.open()的工作方式相同。 codecs.open()总是更多地使用二进制,不会发生行结尾的转换。

在Python 2中,使用wt作为模式可以达到同样的效果。