这里有两个问题。我有一组文件,这些文件通常是带有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个建议的sol'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'模式打开文件,因此我最终应重新编辑问题并删除已解决的部分。
r+
模式。b
还要添加内容,以便它也可以在Windows上运行,而不会终止任何有趣的事情。最后,您需要返回文件的开头并在结尾处截断-请参阅我的最新答案。