这里有两个问题。我有一组通常带BOM的UTF-8文件。我想将它们(最好是就地)转换为没有BOM的UTF-8。似乎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下面提出的解决方案(谢谢!)
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' 模式,所以我应该最终重新编辑我的问题并删除已解决部分。