Python 小白学习读取文本时遇到编码错误,如何解决?

下面是错误提示

Traceback (most recent call last): File "E:/python01/13 文件操作 /h01 读取文件.py", line 4, in <module> text = file.read() UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 34: illegal multibyte sequence</module>

pycharm 中的文本编码也设置成 UTF-8 了,实在找不到解决办法了,求大佬指点


Python 小白学习读取文本时遇到编码错误,如何解决?

5 回复

遇到编码错误,通常是因为文件的实际编码和open()函数指定的encoding参数不匹配。

最常见的解决方法是先用errors='ignore'errors='replace'参数打开文件,避免程序直接崩溃,然后确定文件的真实编码。

# 先尝试用忽略错误的方式读取,看看内容
try:
    with open('your_file.txt', 'r', encoding='utf-8', errors='ignore') as f:
        content = f.read()
        print("用utf-8读取成功(部分字符可能丢失)")
except UnicodeDecodeError:
    print("不是utf-8编码")

# 更通用的方法是尝试常见编码
encodings_to_try = ['utf-8', 'gbk', 'gb2312', 'latin-1', 'cp1252']
file_content = None

for enc in encodings_to_try:
    try:
        with open('your_file.txt', 'r', encoding=enc) as f:
            file_content = f.read()
        print(f"成功用 {enc} 编码读取文件")
        break
    except UnicodeDecodeError:
        continue

if file_content is None:
    print("尝试了常见编码都失败了,文件可能损坏或使用罕见编码")
else:
    # 在这里处理你的文件内容
    print(file_content[:200])  # 打印前200个字符看看

如果文件是你自己创建的,确保保存时使用UTF-8编码。如果是别人给的,可以问问对方用什么编码保存的。在Windows上用记事本保存的文件经常是GBK编码,网页抓取的内容通常是UTF-8。

实在不确定的话,可以用chardet库自动检测编码(需要先安装:pip install chardet):

import chardet

with open('your_file.txt', 'rb') as f:
    raw_data = f.read()
    result = chardet.detect(raw_data)
    print(f"检测到的编码:{result['encoding']},置信度:{result['confidence']}")
    
    # 用检测到的编码读取
    if result['encoding']:
        content = raw_data.decode(result['encoding'])
        print(content[:200])

总结:先确定文件的实际编码,然后用正确的编码参数打开。

这个错误提示有很多种可能造成的,请上代码和 Python 版本。

应该多看看错误提示,然后再去谷歌百度,基本上就了解个大概了。

这个是 gbk 编码无法解码 0X80,在位置 34。也就是这块序列 gbk 无法解码。




感谢 通过指定编解码方式能读取了
file = open(“readme”, encoding=“utf8”)
这样

回到顶部