fs::dir_ls() returns 内部包含中文字符的文件路径的不可读输出

fs::dir_ls() returns unreadable output for file paths with chinese characters inside

我正在使用fs::dir_ls()获取目录main_path下的excel个文件路径,但是由于文件路径中有中文字符,我得到了不可读的输出,我认为这可能与编码问题有关:

main_path <- '../../raw_data/2022-01-10/'
file_paths <- fs::dir_ls(main_path, regexp = ".xlsx") 
file_paths

输出:

../../raw_data/2022-01-10/閽㈤搧_鐒︾偔_浠峰樊_鐒︾偔J2201DCE鐒︾偔J2205DCE_涓诲姏_2022-01-10.xlsx
../../raw_data/2022-01-10/閽㈤搧_鐒︾偔_浠峰樊_鐒︾偔J2201DCE鐒︾偔J2209DCE_2022-01-10.xlsx

虽然 list.files(path = main_path, pattern ='.xlsx') returns 文件名正确:

[1] "甘其毛道库提价含税焦煤A23V2606SG85JM焦煤JM2201DCE_2022-01-10.xlsx"           
  [2] "甘其毛道库提价含税焦煤A23V2606SG85JM焦煤JM2205DCE_2022-01-10.xlsx"

我使用的fs包版本:

Warning message:
package ‘fs’ was built under R version 4.1.2 

有人知道如何处理这个问题吗?或者是否有等效的方法可以在 R 中的目录下获取 excel 文件路径?谢谢。

更新:

我没有找到导致这个错误的原因,它可能与 RStudio 的 locale 有关,因为它适用于我的 Mac 但不适用于 Windows 10 机器,我已设置 Sys.setlocale("LC_ALL","zh_CN.utf-8"),也不起作用,但我找到了替代解决方案:

file_names <- list.files(path = main_path, pattern ='.xlsx')
file_paths <- file.path(main_path, file_names)

输出:

[1] "../../raw_data/2022-01-10/甘其毛道库提价含税焦煤A23V2606SG85JM焦煤JM2201DCE_2022-01-10.xlsx"           
  [2] "../../raw_data/2022-01-10/甘其毛道库提价含税焦煤A23V2606SG85JM焦煤JM2205DCE_2022-01-10.xlsx"

参考:

https://github.com/r-lib/fs/issues/281

https://github.com/r-lib/fs/issues/164

fs包的版本高于1.5.0时,问题是可用的,所以将fs降级到1.5.0可以用代码修复它:

devtools::install_version("fs", "1.5.0")