UnicodeDecodeError: 'cp932' 编解码器无法解码字节 0xfc

新手上路,请多包涵
 import os

for root, dirs, files in os.walk('Path'):
     for file in files:
         if file.endswith('.c'):
             with open(os.path.join(root, file)) as f:
                    for line in f:
                        if 'word' in line:
                            print(line)

得到错误

UnicodeDecodeError:“cp932”编解码器无法解码位置 6616 中的字节 0xfc:非法多字节序列

我认为文件需要 shift jis 编码。我可以只在开始时设置编码吗?我尝试将 open(os.path.join(root, file),‘r’,encoding=‘cp932’) 设置为 f: 但得到了同样的错误

原文由 Chetan.B 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

你可以传递 errors=‘ignore’,但一定要检查你的文件的编码是什么。

 open(os.path.join(root, file),'r', encoding='cp932', errors='ignore')

原文由 cbodt 发布,翻译遵循 CC BY-SA 3.0 许可协议

在这里结束,因为我得到了同样的错误。

我只是在学习,但幸运的是我找到了解决方案。

如果它说:

UnicodeDecodeError: ‘cp932’ 编解码器 无法解码

这意味着您正在使用的文件 以 cp932 编码,因此您实际上需要更改编码。

在我的例子中,我试图读取一个以 UTF-8 编码的文件,所以解决方案是在我打开文件时包含它:

 open("file.txt","r",encoding='utf-8')

我希望这可以帮助任何因为同样的错误来到这里的人。

原文由 Gabu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题