我真的对codecs.open function很困惑。当我这样做的时候:
file = codecs.open("temp","w","utf-8")
file.write(codecs.BOM_UTF8)
file.close()
它给了我错误
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position
0: ordinal not in range(128)
如果我这样做:
file = open("temp","w")
file.write(codecs.BOM_UTF8)
file.close()
它很好用。
问题是为什么第一种方法失败了?如何插入物料清单?
如果第二种方法是正确的方法,那么使用codecs.open(filename,"w","utf-8")有什么意义?
不要使用UTF-8格式的BOM。拜托。
@克里斯蒂安?为什么不呢?
@UTF-8中不需要salmanpk-bom,只会增加复杂性(例如,不能将bom的文件和结果与有效文本连接在一起)。看到这个问题,不要错过问题下面的重要评论。
我认为问题在于codecs.BOM_UTF8是字节字符串,而不是Unicode字符串。我怀疑文件处理程序试图根据"我打算将Unicode作为UTF-8编码文本写入,但您给了我一个字节字符串"来猜测您真正的意思!
尝试直接为字节顺