最佳实践:我应该尝试将UTF-8更改为区域设置还是保持原样安全?

Chr*_*oph 6 windows encoding r utf-8

我尝试将我的默认编码设置为UTF-8; 到目前为止没有成功:

a <- "Hallo"
b <- "äöfd"
print(Encoding(a))
# [1] "unknown"
print(Encoding(b))
# [1] "latin1"

options(encoding = "UTF-8")
a <- "Hallo"
b <- "äöfd"
print(Encoding(a))
# [1] "unknown"
print(Encoding(b))
# [1] "latin1"

old_locale <- Sys.getlocale()
Sys.setlocale(category = "LC_ALL", locale = "English_United States.1252")
a <- "Hallo"
b <- "äöfd"
print(Encoding(a))
# [1] "unknown"
print(Encoding(b))
# [1] "latin1"

Sys.getlocale()
# [1] "LC_COLLATE=German_Switzerland.1252;
# LC_CTYPE=German_Switzerland.1252;
# LC_MONETARY=German_Switzerland.1252;
# LC_NUMERIC=C;LC_TIME=German_Switzerland.1252"
Run Code Online (Sandbox Code Playgroud)

我发现以下链接R编码文件如何使用Sys.setlocale(),但你可以看到它似乎他们不适用于我的情况,我不明白为什么.

我也试过Sys.setlocale(category = "LC_ALL", locale = "en_US.UTF-8")但得到了

警告消息:在Sys.setlocale(category ="LC_ALL",locale ="en_US.UTF-8")中:操作系统报告将区域设置设置为"en_US.UTF-8"的请求无法兑现

cmd命令systeminfo & pause给出

Systemgebietsschema:de-ch; Deutsch(Schweiz)Eingabegebietsschema:de-ch; Deutsch(Schweiz)

编辑:

  • 我担心"unknown"编码会导致我不知道的错误
  • 我认为使用新的标准UTF-8来避免像我这样的问题是很好的.
  • 最后但并非最不重要的是,我希望能够获得可重现的结果 - 一位同事正在使用Mac(编码方面的问题较少)......

Edit2:这个问题有什么经验?有没有最好的做法?

Chr*_*oph 0

这不是一个完美的答案,但却是一个很好的解决方法:正如罗兰指出的那样,更改区域设置可能很危险。所以保持原样。如果您有一个文件并且遇到麻烦,只需按照此处所述搜索非UTF8编码RStudio。据我观察,大部分Editor都有这样的功能。

此外,这个答案让您更深入地了解如果您有source()文件,您可以做什么。

有关当排序规则发挥关键作用时处理语言环境的方法,请参阅此处


几年后编辑:我意识到,Windows 允许您更改一些也会影响 R/RStudio 的设置:

在此输入图像描述 在这个德语设置中,例如(重新启动 RStudio 后):

format(Sys.time(), "%a")
# [1] "Mo" # without "."
Run Code Online (Sandbox Code Playgroud)

然后...

在此输入图像描述

在瑞士设置中,例如(重新启动 RStudio 后):

format(Sys.time(), "%a")
# [1] "Mo." # WITH "."
Run Code Online (Sandbox Code Playgroud)

虽然这个设置不影响LC_TIME=German_Switzerland.1252