平时在使用Ubuntu 或者其它debian系统时,经常会遇到 "Cannot set LC_ALL to default locale.."的错误,一般不影响软件使用,
但在某些特定情况下,也可能造成程序异常或者执行失败。
今天特地了解一下locale的设置,
Ubuntu 中定义locale的位置在/etc/default/locale
root@sm1u07:~# cat /etc/default/locale
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
LC_ALL="en_US.UTF-8"
可以通过命令locale 查看当前系统中的locale设置
root@sm1u07:~# locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
使用locale -a 可以显示当前系统中所有可用locale
如果你要使用的locale不在列表中,
root@sm1u07:~# locale -a
C
C.UTF-8
en_HK.utf8
en_US.utf8
POSIX
UTF-8和utf8是相同,不要纠结怎么写
C 指的是没有locale. 如果将LC_ALL设置为C,就是去除所有的locale设置。
配置完成用请使用
dpkg-reconfigure locales来生成
root@sm1u07:~# dpkg-reconfigure locales
Generating locales...
en_HK.UTF-8... up-to-date
en_US.UTF-8... up-to-date
Generation complete.