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

pandas生成CSV转base64下载时出现UnicodeDecodeError问题求助

问题根因

你的报错和CSV编码、下载逻辑没有关联,错误栈明确指向pickle.load加载模型文件的步骤:
pickle生成的.pkl模型是二进制格式文件,你用默认文本模式打开文件时,Python会尝试用UTF-8解码二进制内容,二进制字节0x80不属于UTF-8有效编码范围,因此触发解码报错。

另外你写的CSV下载函数也存在逻辑错误,即使模型加载修复后,原代码也会生成错误的下载链接,导致下载的CSV文件损坏。

修复步骤

1. 修复模型加载代码

打开.pkl文件时指定二进制读模式rb:

# 原错误代码
load_model = pickle.load(open('sars_cov_proteinase_model.pkl'))
# 修改后正确代码
load_model = pickle.load(open('sars_cov_proteinase_model.pkl', 'rb'))

2. 修复CSV下载函数逻辑

修正编码转换逻辑,正确生成base64格式的下载链接:

def filedownload(df):
    # 生成CSV字符串,用utf-8-sig编码兼容Excel打开不乱码
    csv = df.to_csv(index=False, encoding='utf-8-sig')
    # 字符串转字节后做base64编码,再转字符串放入href
    b64_encoded = base64.b64encode(csv.encode('utf-8')).decode()
    href = f'<a href="data:file/csv;base64,{b64_encoded}" download="prediction.csv">Download Predictions</a>'
    return href

3. 本地CSV生成优化(可选)

如果需要本地导出的CSV文件正常打开,to_csv时也指定编码:

df2.to_csv('example_generated.csv', index=False, encoding='utf-8-sig')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:06:04