平時在使用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.