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

Python脚本读取含非ASCII字符文件时UnicodeDecodeError问题求助

解决Python读取含非ASCII字符文件时的UnicodeDecodeError问题

问题根源

你遇到的UnicodeDecodeError是因为文件的实际编码并非UTF-8。错误中的字节0xe9对应法语字符é,这个字节在Latin-1(ISO-8859-1)或Windows-1252编码中是有效单字节字符,但不符合UTF-8的编码规则,因此用UTF-8解码会失败。

解决方案

1. 使用匹配的编码读取文件

直接用Latin-1或Windows-1252编码读取文件,这两种编码能完美兼容你的法语文本:

# 使用Latin-1编码读取
with open('data.txt', 'r', encoding='latin-1') as f:
    data = f.read()

或者针对Windows环境常用的Windows-1252编码:

with open('data.txt', 'r', encoding='cp1252') as f:
    data = f.read()

2. 自动检测文件编码

如果不确定文件的具体编码,可以用chardet库自动检测:
首先安装库:

pip install chardet

然后运行检测代码:

import chardet

with open('data.txt', 'rb') as f:
    detection_result = chardet.detect(f.read())

print(f"文件编码:{detection_result['encoding']}")

得到编码结果后,替换到open函数的encoding参数中即可正常读取。

3. 转换文件为UTF-8(长期处理方案)

如果希望后续统一用UTF-8格式处理文件,可将原文件转码为UTF-8:

# 读取原编码文件(这里以检测到的latin-1为例)
with open('data.txt', 'r', encoding='latin-1') as f:
    content = f.read()

# 写入UTF-8编码的新文件
with open('data_utf8.txt', 'w', encoding='utf-8') as f:
    f.write(content)

之后直接用UTF-8编码读取新生成的data_utf8.txt即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:13:17