Linux 的 locale

locale 是 Linux 系统中多语言环境的接口,每个 locale 都定义了地区、语言和字符集。locale 的语法规则是:<语言>_<地区>.<字符集编码><@修正值>,如 zh_CN.UTF-8 中,zh 表示中文,CN 表示中国大陆,UTF-8 表示字符集。

查看可用的字符集

locale -a 可以列出所有可用的语言环境/字符集,加 -v 选项可以输出更详细的信息。

ubuntu@ns524146:~$ locale -av
locale: en_US.utf8      archive: /usr/lib/locale/locale-archive
-------------------------------------------------------------------------------
    title | English locale for the USA
   source | Free Software Foundation, Inc.
  address | https://www.gnu.org/software/libc/
    email | [email protected]
 language | American English
territory | United States
 revision | 1.0
     date | 2000-06-24
  codeset | UTF-8

locale: C.utf8          directory: /usr/lib/locale/C.utf8
-------------------------------------------------------------------------------
    title | C locale
    email | [email protected]
 revision | 2.1
     date | 2022-01-30
  codeset | UTF-8
ubuntu@ns524146:~$ 

这些 locale 在 ubuntu 系统中的默认存放位置为:/usr/share/i18n/locales

检查中文字符集

$ locale -a | grep ^zh

如果没有任何输出,则说明字符集没有安装。

安装中文字符集

运行命令进行安装。

sudo apt install language-pack-zh-hans

启用语言集

通过修改 /etc/locale.gen 文件,将 #zh_CN.UTF-8 UTF-8 前面的注释去掉保存,并执行 sudo locale-gen 命令使之生效。