我真的和codecs.open function
混淆。當我這樣做:用Python寫入UTF-8文件
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。 ***請。*** – tchrist 2012-02-09 11:12:46
@tchrist Huh?爲什麼不? – 2013-06-01 05:16:33
@SalmanPK BOM在UTF-8中不需要,只會增加複雜性(例如,您不能只連接BOM'd文件和結果與有效文本)。請參閱[本問答](http://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom);千萬不要錯過Q – 2013-08-29 14:18:46