Debian locale设置方法详解

作者:技术拾光

时间:2026-07-24

浏览:659

locale命名规则 说到Linux系统的国际化设置,绕不开一个关键概念——locale。它的命名规则其实很直白:_.。拿zh_CN.UTF-8举例,zh是中文,CN表示中国大陆,UTF-8就是字符集编码。理解了这个套路,后面的事情就顺了。 locale环境变量详解 在locale环境下,有一组环境

文章目录

locale命名规则

说到Linux系统的国际化设置,绕不开一个关键概念——locale。它的命名规则其实很直白:<语言>_<地区>.<字符集编码>。拿zh_CN.UTF-8举例,zh是中文,CN表示中国大陆,UTF-8就是字符集编码。理解了这个套路,后面的事情就顺了。

locale环境变量详解

在locale环境下,有一组环境变量共同决定了系统的国际化表现。它们各自管一摊事儿,下面挨个捋一遍:

  1. LC_COLLATE —— 排序和比较规则归它管。两个字符串谁大谁小,不同语言有不同的规矩,这个变量说了算。
  2. LC_CTYPE —— 最核心的一个。负责字符分类和字符串处理,包括字符编码、单字节还是多字节、怎么打印等等。几乎所有字符层面的行为都受它影响。
  3. LC_MONETARY —— 货币格式,比如货币符号放前面还是后面、小数点用点还是逗号。
  4. LC_NUMERIC —— 非货币的数字显示格式,比如千位分隔符、小数点符号。
  5. LC_TIME —— 时间和日期格式,比如年月日的顺序、星期几的显示方式。
  6. LC_MESSAGES —— 提示信息的语言,比如系统报错时用中文还是英文。注意还有一个LANGUAGE参数,跟它功能类似,但优先级更高:一旦设置了LANGUAGE,LC_MESSAGES就失效了。而且LANGUAGE可以同时指定多种语言,比如LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。
  7. LANG —— 是所有LC_*的默认值。如果某个LC_变量没设置,系统就会用LANG的值来填充。它相当于最低级别的全局后备。
  8. LC_ALL —— 这是个大招。一旦设置了LC_ALL,它会覆盖所有LC_*(包括LANG吗?注意:LANG不受LC_ALL影响,但LC_*全都会被强制覆盖)。

实际示例

光说理论比较干,我们看个实际例子就更清楚了。

先看看系统默认locale长什么样:

debian:~# locale
LANG="POSIX"
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

能看到,几乎所有值都是POSIX。实际上,“C”是系统默认的locale,“POSIX”就是“C”的别名。新装系统时,默认locale就是C或POSIX。

然后我们用export LC_ALL=zh_CN.GBK设置一下,再看locale输出:

debian:~# export LC_ALL=zh_CN.GBK
debian:~# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.GBK"
LC_NUMERIC="zh_CN.GBK"
LC_TIME="zh_CN.GBK"
LC_COLLATE="zh_CN.GBK"
LC_MONETARY="zh_CN.GBK"
LC_MESSAGES="zh_CN.GBK"
LC_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEPHONE="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=zh_CN.GBK

看明白了吧?LANG还保留着之前的设置(zh_CN.UTF-8),但所有LC_*都被LC_ALL覆盖成了zh_CN.GBK。这就是LC_ALL的霸道之处。

部署配置与locale.gen

接下来聊聊实际部署。以Debian为例,安装locales的方法很简单:apt-get install locales。安装完成后系统会自动跑一个配置向导,你只需要勾选需要的locale(可以多选),然后指定一个默认locale,系统就会自动生成对应的locale并配置好。

如果后续想增加新的locale,用dpkg-reconfigure locales重新配置就行。想手动操作?也容易:把新的locale追加到/etc/locale.gen文件中,然后运行locale-gen,新的locale就生成了。最后通过前面讲的LC_*变量来设置即可。

下面是一个典型的/etc/locale.gen文件样例:

# This file lists locales that you wish to ha ve built. You can find a list
# of valid supported locales at /usr/share/i18n/SUPPORTED. Other
# combinations are possible, but may not be well tested. If you change
# this file, you need to rerun locale-gen.
#
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8

注意,注释里已经提醒了:改完文件别忘了运行locale-gen,否则新加的locale不会生效。这些小细节在实际运维中很容易忽略,但踩坑之后就会记得牢牢的。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章