3.5 KiB
3.5 KiB
1、语言环境概览
Linux 中的“语言管理”通常指的是 Locale(本地化设置),它会影响系统的:
- 显示语言
- 日期和时间格式
- 数字和货币格式
- 排序规则
- 字符编码
如果系统出现中文乱码、命令输出语言不对、程序处理字符异常,很多时候都和 Locale 配置有关。
2、查看当前语言环境
2.1 使用 echo $LANG
echo $LANG
这个环境变量通常表示当前会话默认使用的语言环境,例如:
zh_CN.UTF-8
或:
en_US.UTF-8
2.2 使用 locale
locale
这个命令可以查看当前所有 Locale 相关环境变量,比如:
LANGLC_CTYPELC_TIMELC_MESSAGESLC_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
LANG和LC_*是否配置正确- 文件本身编码是否匹配
- SSH 客户端和服务端编码是否一致
6.3 临时切换语言环境
LANG=en_US.UTF-8 date
这样只对当前这条命令生效,不会永久修改系统配置。
7、排障建议
7.1 输出乱码
优先检查:
locale
echo $LANG
7.2 程序日志时间格式不一致
重点检查:
LC_TIME- 时区配置
- 应用程序自身语言设置
7.3 命令输出语言和预期不一致
重点检查:
LANGLC_MESSAGES- 是否设置了
LC_ALL
8、小结
- Linux 语言管理本质上是 Locale 管理
echo $LANG可以快速查看当前默认语言环境locale比单看LANG更完整localectl是 systemd 系统中常用的语言环境管理工具- 乱码、日期格式异常、提示信息语言不对,很多时候都和 Locale 有关