Windows 7 里没有 "en_US.UTF-8" 这种 locale,
Sys.setlocale() 只能写成 系统已安装的语言包名称,例如:
Sys.setlocale(category = "LC_ALL", "English_United States.1252")
UTF-8 在 Win7 上不是合法 locale,强行写:
Sys.setlocale("LC_ALL", "en_US.UTF-8") # 必然报错
会返回:
[1] ""
Warning message: OS reports request to set locale to "en_US.UTF-8" cannot be honored
Win7 下的可行做法
-
控制台先切到 UTF-8 代码页(65001):
chcp 65001然后同一窗口启动 R。
-
告诉 R 用 UTF-8 处理字符串,而不再改 locale:
Sys.setenv(LANG = "en_US.UTF-8") options(encoding = "UTF-8") -
读写文件时显式指定编码:
readLines("foo.txt", encoding = "UTF-8") writeLines(obj, "foo.txt", useBytes = TRUE)
一句话
在 Windows 7 上无法通过 Sys.setlocale() 设置 UTF-8;
先 chcp 65001,再用 options(encoding = "UTF-8") 即可。

被折叠的 条评论
为什么被折叠?



