You need to enable JavaScript to run this app. R中如何用list.files()读取含高棉语的非Windows原生编码目录名
优惠活动
大模型
产品
解决方案
定价
更多

R中如何用list.files()读取含高棉语的非Windows原生编码目录名

R中Windows环境读取含高棉语等非ASCII字符路径的解决方案

方案1:使用fs包的跨平台文件操作函数

fs是专门优化过文件路径编码兼容性的R包,默认采用UTF-8处理路径,完美解决base R函数的非ASCII路径识别问题,是优先级最高的方案:

  • 安装加载包
install.packages("fs")
library(fs)
  • 递归获取所有JPG文件路径
TargetDirectory <- "D:/ExampleDir"
filenames_full <- dir_ls(TargetDirectory, recurse = TRUE, glob = "*.JPG")
  • 获取所有文件夹路径
dirs <- dir_ls(TargetDirectory, recurse = TRUE, type = "directory")

返回结果会自动包含高棉语命名的目录和内部文件,不需要修改系统或R的基础配置。

方案2:R内调用PowerShell命令捕获结果

不需要额外安装包,直接调用Windows原生的PowerShell命令获取路径列表,完全规避R基础函数的编码缺陷:

TargetDirectory <- "D:/ExampleDir"
# 递归获取所有JPG文件路径
filenames_full <- system2(
  command = "powershell",
  args = c("-Command", sprintf("Get-ChildItem -Path '%s' -Recurse -Filter *.JPG | Select-Object -ExpandProperty FullName", TargetDirectory)),
  stdout = TRUE
)

# 获取所有文件夹路径
dirs <- system2(
  command = "powershell",
  args = c("-Command", sprintf("Get-ChildItem -Path '%s' -Recurse -Directory | Select-Object -ExpandProperty FullName", TargetDirectory)),
  stdout = TRUE
)

该方案返回的路径和系统资源管理器中显示的完全一致,不会遗漏任意非ASCII命名的文件、目录。

方案3:修改R默认编码配置适配UTF-8

如果需要继续使用base R的list.files/list.dirs函数,可以修改R的启动编码配置:

  1. 找到R安装目录下的etc/Rconsole文件
  2. 找到codepage配置项,将值修改为65001(UTF-8对应的Windows代码页)
  3. 保存文件后重启R,再运行原有代码即可识别高棉语路径

注意:该修改会全局变更R的编码处理逻辑,部分旧的ANSI编码脚本可能出现兼容问题,仅临时使用可优先选择前两种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 08:36:10