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

4urapxun  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(149)

我尝试将默认编码设置为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"

我找到了以下链接R Encoding for filesHow to use 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;多伊奇(Schweiz)简体中文de-ch;多伊奇(Schweiz)

编辑

  • 我担心"unknown"编码可能会导致我不知道的错误。
  • 我认为使用新的标准UTF-8来避免像我遇到的问题是很好的。
  • 最后但并非最不重要的是,我希望能够得到可重复的结果-一位同事正在Mac上工作(编码问题较少)...
    **Edit 2:**这个问题的经验是什么?是否有最佳做法?
8hhllhi2

8hhllhi21#

这不是一个完美的答案,而是一个很好的解决方案:正如罗兰所指出的,换个地方可能会有危险。所以就这样吧。如果你有一个文件,你遇到了麻烦,只是搜索非UTF8编码为RStudio描述的here。我所看到的,大多数编辑都有这样的功能。
此外,this回答提供了更多的洞察力,如果你source()一个文件,你可以做什么。
有关在排序规则起关键作用时处理区域设置的方法,请参见here

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

x1c 0d1x在此德语设置中,例如(重启RStudio后):

format(Sys.time(), "%a")
# [1] "Mo" # without "."

然后...

在瑞士,例如。(重启RStudio后):

format(Sys.time(), "%a")
# [1] "Mo." # WITH "."

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

相关问题