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

Windows环境下R读取路径含UTF-8特殊字符的rds文件失败如何解决

解决方案

方案1:升级R到4.2及以上版本(最优先)

Windows平台从R 4.2版本开始默认使用UTF-8作为系统编码,无需额外配置即可正确识别含UTF-8特殊字符的文件路径,升级后直接调用原有的readRDS/read_rds函数即可正常读取文件。

方案2:使用fs包处理路径(无需升级R)

你环境中已加载的fs包专门针对跨平台路径处理设计,非ASCII编码兼容性远高于base R的字符串路径处理,按如下方式修改代码即可:

library(fs)
# 用fs::path代替str_c拼接路径
file_path <- path(
  outputDIR_pro[i],
  str_c(
    sub(".+/data/Strava/.+/([0-9]+?).txt", "\\1", athlethes[[i]][[j]]) %>% 
      str_match('\\d+') %>% 
      str_detect(names_id_vec,.) %>% 
      names_id_vec[.] %>% 
      str_remove('\\d+;'),
    '_sprinter_point.rds'
  )
)
# 去除路径首尾多余空格后读取
file_path <- str_trim(file_path)
readRDS(file_path)

方案3:修改编码配置

在脚本开头添加如下代码,强制R使用UTF-8处理字符:

# 配置字符类型编码为UTF-8,如执行报错可替换为Sys.setlocale("LC_CTYPE", ".65001")
Sys.setlocale(category = "LC_CTYPE", locale = "UTF-8")
# 设置全局默认编码为UTF-8
options(encoding = "UTF-8")

配置完成后再运行路径生成和读取代码即可。

方案4:使用Windows短路径绕过编码问题

如果上述方案都不生效,可将路径转换为Windows兼容的8.3短路径,绕过编码识别限制:

# 生成原始路径
raw_path <- str_c(
  outputDIR_pro[i],
  sub(".+/data/Strava/.+/([0-9]+?).txt", "\\1", athlethes[[i]][[j]]) %>% 
    str_match('\\d+') %>% 
    str_detect(names_id_vec,.) %>%
    names_id_vec[.] %>%
    str_remove('\\d+;'),
  '_sprinter_point.rds'
)
# 去除空格后转短路径读取
raw_path <- str_trim(raw_path)
readRDS(shortPathName(raw_path))

注意:你打印的路径首尾和中间文件夹名称后存在多余空格,必须先去除空格再执行读取,否则即使编码正常也会匹配不到文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:39:02