最佳答案
我有两个问题。我有一套文件,通常是 UTF-8与 BOM。我想转换他们(理想的地方)到 UTF-8没有 BOM。看起来 codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors)
会处理这个。但是我真的没有看到任何关于使用的好例子。这是解决问题的最好办法吗?
source files:
Tue Jan 17$ file brh-m-157.json
brh-m-157.json: UTF-8 Unicode (with BOM) text
另外,如果我们能够处理不同的输入编码而不显式地知道(参见 ASCII 和 UTF-16) ,那将是理想的。看来这一切都是可行的。有没有一种解决方案,可以采用任何已知的 Python 编码和输出作为 UTF-8而不需要 BOM?
编辑1 从下面建议溶胶’n (谢谢!)
fp = open('brh-m-157.json','rw')
s = fp.read()
u = s.decode('utf-8-sig')
s = u.encode('utf-8')
print fp.encoding
fp.write(s)
这给我带来了以下错误:
IOError: [Errno 9] Bad file descriptor
有人在评论中告诉我,错误在于我用‘ rw’而不是‘ r +’/‘ r + b’模式打开文件,所以我最终应该重新编辑我的问题并删除已解决的部分。