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'
。
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'
。