我有Unicode字符串(带有日语字符),我想写到CSV文件中。但是,BOM似乎写得不正确,就像第一行中的字符串""一样。这导致Excel无法正确显示日文字符。使用Notepad++打开CSV时,字符将正确显示。
fileObj = codecs.open(filename,"w",'utf-8')
fileObj.write(codecs.BOM_UTF8)
c = u';'
for s in stringsToWrite:
line = e.someUnicodeString
fileObj.write(line)
fileObj.close()发布于 2012-08-30 09:47:57
fileObj = codecs.open(filename,"w",'utf-8')好的,您有一个Unicode输出流。
fileObj.write(codecs.BOM_UTF8)BOM_UTF8是一个字节序列,而不是您期望写入Unicode流的Unicode字符串。Python将使用某些编码自动从字节转换为Unicode,这可能不是正确的编码。如果默认编码是Windows代码页1252而不是UTF-8,那么您将有效地对BOM进行双重编码,并且它将作为的UTF-8编码。
建议将BOM改为Unicode字符:
fileObj.write(u'\uFEFF')InternetSeriousBusiness写道:
UTF-8 BOM不气馁吗?-
是的,在大多数情况下,UTF-8的faux-BOM在很大程度上是一场灾难,但需要得到Excel的字符集猜测才能获得UTF-8。不幸的是,它在Excel中对Mac不起作用。另一种可能的办法可能是使用UTF-16。
发布于 2012-08-29 14:36:46
您复制的字符串是UTF-8 BOM。因此,您的问题不是在python代码中,而是在其他地方。
https://stackoverflow.com/questions/12180376
复制相似问题