Lors de l'exécution de R dans rApache, les paramètres régionaux sont hérités du serveur Web Apache, et donc Sys.getlocale()
est toujours égal à "C"
. Je souhaite que mon application Web utilise UTF8
, donc j'utilise:
Sys.setlocale("LC_ALL", 'en_US.UTF-8')
Cependant, cela ne fonctionne pas sur les machines qui ne disposent pas de cette locale:
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”
Existe-t-il un moyen d'utiliser Sys.setlocale
pour définir les paramètres régionaux sur la valeur par défaut du système UTF-8
? C'est à dire. quelque chose qui fonctionnerait également sur Windows ou un Linux allemand?
Répondre à ma propre question: sur Ubuntu, le LANG
par défaut est défini dans /etc/default/locale
:
jeroen@dev:~⟫ cat /etc/default/locale
# Created by cloud-init v. 0.7.7 on Wed, 29 Jun 2016 11:02:51 +0000
LANG="en_US.UTF-8"
Donc, dans R, nous pourrions faire quelque chose comme:
readRenviron("/etc/default/locale")
LANG <- Sys.getenv("LANG")
if(nchar(LANG))
Sys.setlocale("LC_ALL", LANG)
Apache a également une ligne dans /etc/Apache2/envvars
qui peut être décommenté pour l'activer.
Je suppose que vous devez vérifier l'OS. Les noms de paramètres régionaux diffèrent selon le système d'exploitation, voir les exemples dans le fichier d'aide.
?Sys.getlocale()
Examples
Sys.getlocale()
Sys.getlocale("LC_TIME")
## Not run:
Sys.setlocale("LC_TIME", "de") # Solaris: details are OS-dependent
Sys.setlocale("LC_TIME", "de_DE.utf8") # Modern Linux etc.
Sys.setlocale("LC_TIME", "de_DE.UTF-8") # ditto
Sys.setlocale("LC_TIME", "de_DE") # OS X, in UTF-8
Sys.setlocale("LC_TIME", "German") # Windows
## End(Not run)
Sys.getlocale("LC_PAPER") # may or may not be set
## Not run:
Sys.setlocale("LC_COLLATE", "C") # turn off locale-specific sorting,
# usually, but not on all platforms
## End(Not run)
Essaye ça:
Sys.setlocale(category = "LC_ALL", locale = "English_United States.1252")