UnicodeDecodeError: 'cp932' codec can't decode byte 0xfc

UnicodeDecodeError: 'cp932' codec can't decode byte 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: 但得到同样的错误

尝试使用 io 库:

io.open(os.path.join(root, file), mode='r', encoding='cp932')

您可以传递 errors='ignore',但请务必检查文件的编码。

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

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

我只是在学习,幸好我找到了解决办法。

如果它说:

UnicodeDecodeError: 'cp932'编解码器无法解码

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

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

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

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

您需要将阅读模式从 'r' 更改为 'rb'