
我在前面读取机器翻译数据集时已经添加了encoding,为什么仍然出现UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 33: illegal multibyte sequence的报错

阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
你遇到的问题是 UnicodeDecodeError,原因是你读取的数据集使用了GBK编码,而你使用的默认编码可能不是GBK。解决方法有以下几种:
chardet 库来检测编码:import chardet
with open('your_file.txt', 'rb') as f:
result = chardet.detect(f.read())
charenc = result['encoding']
print(charenc)
utf-8 编码来读取文件:with open('your_file.txt', 'r', encoding='utf-8') as f:
# 你的代码
errors 参数来忽略错误:with open('your_file.txt', 'r', encoding='gbk', errors='ignore') as f:
# 你的代码
iconv 库来转换编码:import iconv
with open('your_file.txt', 'rb') as f:
data = f.read()
data = iconv.iconv('utf-8', 'gbk', data)
# 你的代码
记住,解决 UnicodeDecodeError 的关键是确定文件的编码,然后使用正确的编码来读取文件。