写入文件时强制使用UTF-8



在Python中将字符串写入文件时,如何强制执行UTF-8编码?我需要在更大的工具链中使用它,但无法使它可靠地运行。遵循Stack Overflow的不同、失败的方法,这里有一个MWE对我来说已经失败了:

import codecs
f1 = codecs.open("/tmp/works.utf8", "w", encoding="utf-8")
f1.write("ä")
f1.close()
f2 = codecs.open("/tmp/fails.utf8", "w", encoding="utf-8")
f2.write("a")
f2.close()

控制台测试:

$ file -i works.utf8 
works.utf8: text/plain; charset=utf-8
$ file -i fails.utf8 
fails.utf8: application/octet-stream; charset=binary

我错过了什么?

在python 3上,您不再使用编解码器来打开文件。打开函数上有一个新的encoding参数:

https://docs.python.org/3/library/functions.html#open

关于file程序。它通过猜测内容来工作。你需要添加一个UTF-8 BOM,让它有更多的机会识别它,因为它也可能是一个ascii文件(或者二进制文件,因为只有一个字节不能说明太多(

最新更新