R启动时.Rprofile中的编码问题

时间:2018-07-08 14:00:45

标签: r encoding rprofile

我在Windows 10上使用R(v3.5.1),并且我的工作目录中有一个.Rprofile文件。该文件包含非ASCII字母,但以UTF-8编码保存。在启动时,非ASCII字母的编码会失真。例如代码:

nth <- Sys.setlocale(locale = "Lithuanian")
print("Ą Ę Ė Į Š Č Ų")

如果在启动时运行会导致:

[1] "Ä„ Ä\230 Ä– Ä® Å  Ä\214 Ų"

我的问题是:

  1. 是否可以在启动时配置使用UTF-8编码来提供.Rprofile的R?
  2. 是否还有另一种方法可以在启动时获取正确编码的非ASCII字母?

1 个答案:

答案 0 :(得分:2)

很多可能的答案:

R将使用当前代码页获取.Rprofile。我不知道编码语言环境“立陶宛语”的含义,但是如果您以该编码而不是UTF-8保存文件,则可能会起作用。 (我不确定您是否可以在R会话期间更改代码页。)

我时不时地看到Windows声称拥有UTF-8代码页。也许您可以使它正常工作。

如果失败,则可以切换到具有适当UTF-8支持的其他操作系统(Linux,MacOS等)。

也许您可以设置两个文件:一个纯粹的ascii .Rprofile,它可以获取第二个文件,并声明第二个文件为UTF-8。例如,将其放入您的.Rprofile

source(".RprofileUTF8.R", encoding="UTF-8")

但是,我必须警告您,我无法使它正常工作。

您可以将\uxxx转义符用作UTF-8字符。您可以找到类似代码的

as.hexmode(utf8ToInt("Ą Ę Ė Į Š Č Ų"))

这表明

[1] "104" "020" "118" "020" "116" "020" "12e" "020" "160" "020" "10c" "020" "172"

所以等效的字符串是“ \ u104 \ u118 \ u116 \ u12e \ u160 \ u10c \ u172”,对我来说, 将其放入.Rprofile的Windows会话中即可。