这里有两个问题。我有一组通常是带有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'模式打开文件,因此我最终应重新编辑问题并删除已解决的部分。
3 回答

偶然的你
TA贡献1841条经验 获得超3个赞
在Python 3中,这非常简单:读取文件并使用utf-8编码重写:
s = open(bom_file, mode='r', encoding='utf-8-sig').read()
open(bom_file, mode='w', encoding='utf-8').write(s)
添加回答
举报
0/150
提交
取消