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

Julia使用Downloads下载CSV报ArgumentError:Symbol名称不得包含\0错误

解决方案

根因说明

你遇到的两个报错本质是该站点默认对请求返回gzip压缩后的响应,且未正确设置Content-Encoding响应头,导致Julia的Downloads库无法识别并自动解压,你通过Downloads.download拿到的文件实际是gzip压缩包,不是纯文本CSV,因此直接读取会出现空字符、无效UTF-8字符串的报错。手动下载时浏览器会自动完成gzip解压,所以本地读取完全正常。

修复方案

方案1:添加请求头要求服务端返回未压缩内容

直接在下载时指定Accept-Encoding: identity头,告知服务端不要返回压缩内容,不需要额外依赖即可解决:

using Downloads, CSV, DataFrames
url = "https://r-data.pmagunia.com/system/files/datasets/dataset-85141.csv"
# 新增请求头要求非压缩响应
f = Downloads.download(url; headers = ["Accept-Encoding" => "identity"])
df = CSV.read(f, DataFrame)
# 如果列名仍有特殊字符,可添加normalizenames参数:
# df = CSV.read(f, DataFrame; normalizenames=true)

方案2:手动解压下载的压缩内容

如果不方便修改请求头,可以引入CodecZlib库手动解压下载到的压缩内容,也可以直接读取流式内容不需要落地存储:

using Downloads, CSV, DataFrames, CodecZlib
url = "https://r-data.pmagunia.com/system/files/datasets/dataset-85141.csv"
# 直接读取流式响应并解压
stream = Downloads.download(url, IOBuffer())
seekstart(stream)
df = CSV.read(GzipDecompressorStream(stream), DataFrame)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:54:03