为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中将没有BOM的UTF-8转换为带有BOM的UTF-8

在Python中将没有BOM的UTF-8转换为带有BOM的UTF-8

慕工程0101907 2019-10-17 15:03:50
这里有两个问题。我有一组通常是带有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)


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 2637 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信