UTF8 Python物料清单

2024-06-06 18:33:50 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Write to utf-8 file in python

我有Unicode字符串(带日语字符)要写入CSV文件。 然而,BOM似乎并没有像第一行的字符串""那样正确地编写。这导致Excel无法正确显示日文字符。使用记事本++打开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()

Tags: csvto字符串inlinebom字符utf
2条回答

你复制的字符串是UTF-8 BOM。因此,问题不在python代码中,而在其他地方。

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写道:

Isn't the UTF-8 BOM discouraged, anyway? –

是的,在大多数情况下,UTF-8伪BOM在很大程度上是一个灾难,但是需要通过Excel的字符集猜测来获取UTF-8。不幸的是,它在Excel中不适用于Mac。另一种可能的方法是使用UTF-16。

相关问题 更多 >