【发布时间】: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 files 和 How 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;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 时它们对我来说非常罕见。