wiki/运维/Linux/笔记/7.语言管理.md
2026-04-08 19:40:00 +08:00

3.5 KiB
Raw Blame History

1、语言环境概览

Linux 中的“语言管理”通常指的是 Locale本地化设置,它会影响系统的:

  • 显示语言
  • 日期和时间格式
  • 数字和货币格式
  • 排序规则
  • 字符编码

如果系统出现中文乱码、命令输出语言不对、程序处理字符异常,很多时候都和 Locale 配置有关。

2、查看当前语言环境

2.1 使用 echo $LANG

echo $LANG

这个环境变量通常表示当前会话默认使用的语言环境,例如:

zh_CN.UTF-8

或:

en_US.UTF-8

2.2 使用 locale

locale

这个命令可以查看当前所有 Locale 相关环境变量,比如:

  • LANG
  • LC_CTYPE
  • LC_TIME
  • LC_MESSAGES
  • LC_ALL

通常比单独看 LANG 更全面。

3、localectl 命令

在使用 systemd 的 Linux 发行版中,localectl 是常用的语言环境管理工具。

3.1 常见子命令

localectl status

查看当前语言环境设置。

localectl set-locale LANG=zh_CN.UTF-8

设置系统语言环境。

localectl list-locales

列出系统支持的 Locale。

localectl set-keymap us

设置控制台键盘布局。

3.2 命令列表示意

Commands:
  status                   Show current locale settings
  set-locale LOCALE...     Set system locale
  list-locales             Show known locales
  set-keymap MAP [MAP]     Set console and X11 keyboard mappings

4、常见 Locale 格式

Locale 一般长这样:

语言_国家.编码

例如:

  • zh_CN.UTF-8中文中国UTF-8 编码
  • en_US.UTF-8英文美国UTF-8 编码
  • ja_JP.UTF-8日文日本UTF-8 编码

其中:

  • 前半部分表示语言
  • 中间部分表示国家或地区
  • 后半部分表示字符编码

5、常见配置项说明

5.1 LANG

默认语言环境,通常作为系统的基础 Locale 设置。

5.2 LC_*

可以对某个类别单独指定,例如:

  • LC_TIME:时间格式
  • LC_MESSAGES:提示信息语言
  • LC_NUMERIC:数字格式

5.3 LC_ALL

优先级通常最高,用于临时强制覆盖其他 Locale 设置。

例如:

LC_ALL=C ls

这个命令会临时使用最基础的 C 语言环境执行 ls

6、常见使用场景

6.1 系统输出改成中文或英文

例如把系统语言设置为中文:

localectl set-locale LANG=zh_CN.UTF-8

设置为英文:

localectl set-locale LANG=en_US.UTF-8

6.2 排查乱码问题

常见检查点:

  • 当前终端编码是否为 UTF-8
  • LANGLC_* 是否配置正确
  • 文件本身编码是否匹配
  • SSH 客户端和服务端编码是否一致

6.3 临时切换语言环境

LANG=en_US.UTF-8 date

这样只对当前这条命令生效,不会永久修改系统配置。

7、排障建议

7.1 输出乱码

优先检查:

locale
echo $LANG

7.2 程序日志时间格式不一致

重点检查:

  • LC_TIME
  • 时区配置
  • 应用程序自身语言设置

7.3 命令输出语言和预期不一致

重点检查:

  • LANG
  • LC_MESSAGES
  • 是否设置了 LC_ALL

8、小结

  • Linux 语言管理本质上是 Locale 管理
  • echo $LANG 可以快速查看当前默认语言环境
  • locale 比单看 LANG 更完整
  • localectl 是 systemd 系统中常用的语言环境管理工具
  • 乱码、日期格式异常、提示信息语言不对,很多时候都和 Locale 有关