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的启动编码配置:
- 找到R安装目录下的
etc/Rconsole文件 - 找到
codepage配置项,将值修改为65001(UTF-8对应的Windows代码页) - 保存文件后重启R,再运行原有代码即可识别高棉语路径
注意:该修改会全局变更R的编码处理逻辑,部分旧的ANSI编码脚本可能出现兼容问题,仅临时使用可优先选择前两种方案。
内容的提问来源于stack exchange,提问作者gisol
相关产品推荐
相关产品推荐

