You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用带encoding参数的file.read()时遇UnicodeDecodeError错误求助

解决UnicodeDecodeError:UTF-8解码失败问题

问题本质

你指定了encoding="utf-8"读取文件,但文件实际编码并非UTF-8,或是存在损坏的UTF-8字节(比如错误信息里的0xdd,单独出现不属于有效的UTF-8续字节)。另外注意:你代码最后print(file)打印的是文件对象,而非文件内容,要查看内容需改成print(text)。

可行解决方案

1. 尝试常见替代编码

Windows环境下非UTF-8文件常用gbk、cp1252编码,替换编码参数尝试:

# 用gbk编码读取
with open("test.txt", "r", encoding="gbk") as file:
    text = file.read()
    print(text)

或者尝试cp1252:

with open("test.txt", "r", encoding="cp1252") as file:
    text = file.read()
    print(text)

2. 跳过/替换损坏字节(应急方案)

如果允许丢失少量数据,可添加errors参数跳过损坏字节:

# 忽略错误字节
with open("test.txt", "r", encoding="utf-8", errors="ignore") as file:
    text = file.read()
    print(text)

或用�替换损坏字节:

with open("test.txt", "r", encoding="utf-8", errors="replace") as file:
    text = file.read()
    print(text)

3. 检测文件真实编码

用第三方库chardet自动检测编码:
先安装库:

pip install chardet

再执行检测代码:

import chardet

with open("test.txt", "rb") as f:
    detect_result = chardet.detect(f.read())

print(f"检测到的编码:{detect_result['encoding']}")
# 用检测出的编码读取文件
with open("test.txt", "r", encoding=detect_result['encoding']) as file:
    text = file.read()
    print(text)

4. 推荐的文件操作方式

始终使用with语句,它会自动关闭文件,避免资源泄漏,这是Python官方推荐的文件操作规范。

内容的提问来源于stack exchange,提问作者kalizan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:15:56