Jer*_*oen 24 locale r utf-8 rapache
在rApache中运行R时,语言环境是从Apache Web服务器继承的,因此Sys.getlocale()始终等于"C".我想使用我的Web应用程序UTF8,所以我使用:
Sys.setlocale("LC_ALL", 'en_US.UTF-8')
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于没有此区域设置的计算机:
1: Setting LC_CTYPE failed, using "C"
2: Setting LC_COLLATE failed, using "C"
3: Setting LC_TIME failed, using "C"
4: Setting LC_MESSAGES failed, using "C"
5: Setting LC_MONETARY failed, using “C”
Run Code Online (Sandbox Code Playgroud)
有没有办法Sys.setlocale将语言环境设置为系统默认值UTF-8?即在Windows或德语Linux上也可以使用的东西?
回答我自己的问题:在 Ubuntu 上,默认值LANG定义在/etc/default/locale:
jeroen@dev:~\xe2\x9f\xab cat /etc/default/locale\n# Created by cloud-init v. 0.7.7 on Wed, 29 Jun 2016 11:02:51 +0000\nLANG="en_US.UTF-8"\nRun Code Online (Sandbox Code Playgroud)\n\n所以在 R 中我们可以做这样的事情:
\n\nreadRenviron("/etc/default/locale")\nLANG <- Sys.getenv("LANG")\nif(nchar(LANG))\n Sys.setlocale("LC_ALL", LANG)\nRun Code Online (Sandbox Code Playgroud)\n\nApache 还有一行/etc/apache2/envvars可以取消注释来启用此功能。