如何从包含非英文字符

时间:2017-11-06 08:42:02

标签: r path character non-english

我的桌面上有两个文件夹,它们包含相同的文件。看来,包含非英文字符的目录(路径)在我当前的Windows环境中不起作用。

> setwd("C:/Users/my_user/Desktop/folder_name_including_only_english_characters")
> list.files()
[1] "test.csv"    "test.jpg"    "test.pdf"    "Test.R"      "test.sql"    "test.xlsx"
> setwd("C:/Users/my_user/Desktop/folder_name_including_non_english_characters_like_ıüö")
> list.files()
character(0)

我不确定这是否与R或Windows 10的设置有关。

我的另一台电脑没有这个问题。

更新

在我最近的尝试中,我注意到,虽然list.files()函数失败,但R仍然可以使用内置的read.csv2函数从包含非英文字符的目录中读取文件。但是,当我尝试读取xlsx文件时,例如:

openxlsx::read.xlsx(paste0("C:/Users/my_user/Desktop/folder_name_including_non_English_characters_like_ıüö","/test.xlsx"))

它给出了以下错误。 (顺便说一句,openxlsx :: read.xlsx()函数从仅包含英文字符的目录中读取文件。

Error in file(con, "r") : invalid 'description' argument
In addition: Warning message:
In unzip(xlsxFile, exdir = xmlDir) : error 1 in extracting from zip file

我怀疑函数list.files()失败和使用openxlsx :: read.xlsx()函数的错误背后的原因可能是相同的。

我的问题是:我应该更改哪些设置以使R成功识别包含非英文字符的目录?

2 个答案:

答案 0 :(得分:0)

在敲了几个小时之后,当Sys.glob(*.*)失败时,list.files是唯一可能的选择。

> Sys.setlocale(locale = 'Turkish_Turkey.1254')
[1] "LC_COLLATE=Turkish_Turkey.1254;LC_CTYPE=Turkish_Turkey.1254;LC_MONETARY=Turkish_Turkey.1254;LC_NUMERIC=C;LC_TIME=Turkish_Turkey.1254"
> setwd('C:/Users/SA31/non_english_characters_like_ıüö')
> list.files()
character(0)
> Sys.glob('*.*')
[1] "New Text Document.txt"

更新了没有setwd的代码:

> Sys.glob('C:/Users/SA31/non_english_characters_like_ıüö/*')
[1] "C:/Users/SA31/non_english_characters_like_ıüö/New Text Document.txt"
[2] "C:/Users/SA31/non_english_characters_like_ıüö/New folder"

答案 1 :(得分:0)

将非unicode程序的系统语言环境更改为土耳其语可以解决此问题。 “所有控制面板项目”>“区域和语言”>“管理员”>“更改系统区域设置”