为何两台配置相同的Windows 10机器运行getSymbols时一台正常一台报curl错误?
解决curl解压缩错误的实操方案
问题背景
两台Windows 10设备连接同一Wi-Fi并运行RStudio,机器1执行x <- getSymbols("VTI",src="yahoo")正常返回"VTI",机器2却反复出现两类curl解压缩错误:
Error in curl::curl_fetch_memory(cu, handle = h) : Error while processing content unencoding: invalid block type
Error in curl::curl_fetch_memory(cu, handle = h) : Error while processing content unencoding: too many length or distance symbols
已尝试更换Wi-Fi、重启设备/RStudio、关闭防火墙,问题依旧,且机器2此前运行该代码完全正常。
修复步骤
清除curl本地缓存
执行以下命令清空curl的缓存文件,避免旧缓存干扰:library(curl) curl_clear_cache()完成后重新运行目标代码测试。
强制禁用请求压缩
绕开解压缩环节,直接请求未压缩的内容:library(quantmod) options(getSymbols.yahoo.warning = FALSE) getSymbols("VTI", src = "yahoo", curl.options = list(httpheader = c(`Accept-Encoding` = "identity")))重装依赖库至最新版本
卸载并重新安装curl、quantmod及其依赖包,修复可能的版本兼容或文件损坏问题:remove.packages(c("curl", "quantmod", "xts", "zoo")) install.packages(c("curl", "quantmod"), dependencies = TRUE)安装完成后务必重启RStudio再测试。
排查系统级解压缩组件
这类错误可能和Windows系统的zlib或VC++组件异常有关:- 打开Windows设置-更新和安全-Windows更新,安装所有待更系统补丁
- 下载并安装最新版的Microsoft Visual C++可再发行组件包
重置R用户配置
若用户配置文件存在异常,可尝试重置:- 关闭RStudio
- 定位到
C:\Users\[你的用户名]\Documents\.R文件夹,重命名为.R_old - 重新启动RStudio,系统会生成全新的配置文件,再安装quantmod测试
内容的提问来源于stack exchange,提问作者John Dishman
相关产品推荐
相关产品推荐

