我有一个带BOM的UTF-16LE文件。我想把这个文件翻到没有BOM的UTF-8,这样我就可以用Python解析它。
我通常使用的代码没有做到这一点,它返回的是未知字符,而不是实际的文件内容。
f = open('dbo.chrRaces.Table.sql').read()
f = str(f).decode('utf-16le', errors='ignore').encode('utf8')
print f
解码这个文件的正确方法是什么,这样我可以用f.readlines()
解析它?
Tags:
首先,你应该在二进制模式下阅读,否则事情会变得混乱。
然后,检查并删除BOM,因为它是文件的一部分,而不是实际文本的一部分。
在完成所有解析/处理之前,不要进行编码(到
utf-8
或其他方式)。您应该使用unicode字符串来完成所有这些操作。而且,
errors='ignore'
上的decode
可能是个坏主意。想想更糟的是:让你的程序告诉你一些错误并停止,或者返回错误的数据?相关问题 更多 >
编程相关推荐