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

Encoding issue in .Rprofile at the startup of R

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

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

如果 运行 在启动时导致:

[1] "Ä„ Ä0 Ä– Ä® Å  Ä4 Ų"

我的问题是:

  1. 是否可以将 R 配置为在启动时使用 UTF-8 编码来源 .Rprofile
  2. 是否有其他方法可以在启动时正确编码非 ASCII 字母?

很多可能的答案:

R 将使用当前代码页获取 .Rprofile。我不知道编码语言环境 "Lithuanian" 意味着什么,但如果您以该编码而不是 UTF-8 保存文件,它可能会起作用。 (不过我不确定您是否可以在 R 会话期间更改代码页。)

我时常看到 Windows 声称拥有 UTF-8 代码页;也许你可以让它发挥作用。

如果失败,您可以切换到具有适当 UTF-8 支持的不同 OS(Linux、MacOS 等)。

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

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

但是,我必须警告你我无法让它工作。

您可以对 UTF-8 字符使用 \uxxx 转义。你可以找到那些代码像

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 会话中工作。