【问题标题】:Best practice: Should I try to change to UTF-8 as locale or is it safe to leave it as is?最佳实践:我应该尝试将语言环境更改为 UTF-8 还是保持原样安全?
【发布时间】:2017-01-30 15:50:38
【问题描述】:

我尝试将默认编码设置为 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 &amp; pause 给出

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

编辑

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

Edit2:遇到这个问题的经验是什么?有什么最佳做法吗?

【问题讨论】:

  • 我怀疑这在 Windows 系统上是否可行,但即使是这样,您也可能很快就会遇到麻烦。你为什么要这个?
  • @Roland 查看我的编辑。我用英语编写代码(脚本和包)。一旦我开始使用涉及客户数据的控制台,我就需要使用元音变音器,但我遇到了麻烦。
  • 1) 您链接到的问题已在 R 更新中得到修复。 2) 我认为 Windows 对 UTF-8 的支持不足以使其成为默认值。 (但我可能是错的。) 3)我是德国人,Umlaute 的问题(这是默认 latin1 字符集的一部分)非常罕见,以至于我几乎不记得上次是什么时候了(我认为它与 data.table 有关及其连接优化,我可以轻松关闭)。
  • 好的。我害怕,我会遇到更多的麻烦。但也许一切都很好。你能写下你的评论作为答案吗?您有什么建议:将导入的数据更改为本地 latin1?以防我可以修改问题的标题(例如“如果我没有 UTF-8 作为语言环境会不会有问题?”)
  • 我对这个问题没有足够的了解来发布答案。编码问题是我的噩梦之一。我只能说在使用 R 时它们对我来说非常罕见。

标签: r windows encoding utf-8


【解决方案1】:

这不是一个完美的答案,而是一个很好的解决方法:正如 Roland 指出的那样,更改语言环境可能很危险。所以保持原样。如果您有文件并且遇到问题,只需搜索here 中描述的非UTF8 编码RStudio。我看到的,大部分编辑器都有这样的功能。

此外,this 的回答可以让您更深入地了解如果您 source() 一个文件,您可以做什么。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多