Ant*_*mba 2 python unicode byte-order-mark utf-8
可能重复:
在python中写入utf-8文件
我有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()
Run Code Online (Sandbox Code Playgroud)
fileObj = codecs.open(filename,"w",'utf-8')
Run Code Online (Sandbox Code Playgroud)
好的,你有一个Unicode输出流.
fileObj.write(codecs.BOM_UTF8)
Run Code Online (Sandbox Code Playgroud)
BOM_UTF8是一个字节序列,而不是您希望写入Unicode流的Unicode字符串.Python将使用某些编码自动从字节转换为Unicode,这可能不是正确的编码.如果默认编码是Windows代码页1252而不是UTF-8,那么您将有效地对BOM进行双重编码,它将作为UTF-8编码
.
建议将BOM写为Unicode字符:
fileObj.write(u'\uFEFF')
Run Code Online (Sandbox Code Playgroud)
InternetSeriousBusiness写道:
无论如何,不鼓励UTF-8 BOM吗? -
是的,在大多数情况下,UTF-8虚假BOM很大程度上是一场灾难,但需要让Excel的charset猜测才能获得UTF-8.不幸的是它在Excel for Mac中不起作用.另一种可能的方法可能是使用UTF-16.
归档时间: |
|
查看次数: |
11340 次 |
最近记录: |