RockyLinux 设置中文语言支持
在默认的 rocky linux 是没有中文语言包的, 这样在某些情况下查看中文会产生乱码, 如下是查看 git 日志时候出现的乱码
commit 3cbe7c43e7ebb4a3b03dc9d003cb3310f03ebdbc
Author: duoli <duoli@example.com>
Date: Wed Nov 5 08:45:43 2025 +0800
feat(app): <E8><BF><87><E6><BB><A4><E6><8E><89><E7><B1><BB><E5>
<9E><8B><E4><B8><BA>tag<E7><9A><84><E5><AD><97><E6><AE><B5>...可能不同的发行方对系统做了一些更新导致会缺失中文语言包, 为了解决类似问题, 我们需要检查并安装语言包同时并设置 $LANG 和 $LC_ALL
查看是否存在中文语言
shell
[root@duoli]# localectl list-locales |grep zh
zh_CN
zh_CN.gb18030
zh_CN.gbk
zh_CN.utf8如果没有, 则安装语言包
shell
[root@duoli ~]# dnf install -y langpacks-zh_CN glibc-commonlangpacks-zh_CN:简体中文语言包核心组件glibc-common:提供字符集支持(包含zh_CN.UTF-8编码)
通过 localectl 工具设置当前的语言包
shell
[root@duoli ~]# localectl set-locale LANG=zh_CN.UTF-8重新登录后,执行以下命令确认:
shell
[root@duoli ~]$ echo $LANG若输出 zh_CN.UTF-8 则表示设置成功
localectl 设置未生效,大概率是配置未同步到用户会话或存在优先级更高的局部配置,按以下步骤排查修复:
1. 先确认系统级配置是否已写入
执行命令查看系统语言配置,确认 localectl 已正确修改系统级设置:
bash
localectl status若输出中 LANG=zh_CN.UTF-8 ,说明系统级配置已生效,问题出在用户会话或局部配置覆盖。
2. 手动强制同步配置到当前会话
bash
# 重新加载系统 locale 配置
source /etc/locale.conf
# 手动设置环境变量(临时生效,用于验证)
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8执行后立即用 echo $LANG 验证,若输出 zh_CN.UTF-8 ,说明配置本身没问题,只需永久同步到用户会话。
3. 永久写入用户会话配置
编辑用户环境变量配置文件,确保每次登录自动加载中文 locale:
bash
# 编辑 .bash_profile(适用于登录shell)
echo 'export LANG=zh_CN.UTF-8' >> ~/.bash_profile
echo 'export LC_ALL=zh_CN.UTF-8' >> ~/.bash_profile
# 编辑 .bashrc(适用于非登录shell,如终端)
echo 'export LANG=zh_CN.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=zh_CN.UTF-8' >> ~/.bashrc
# 生效配置
source ~/.bash_profile && source ~/.bashrc4. 验证与收尾
- 重启终端或重新登录系统(关键步骤,确保所有配置加载)。
- 执行
echo $LANG和locale命令,若所有输出均为zh_CN.UTF-8,则设置成功
这样, 我们就可以看到语言是正确的了, bingo
[root@duoli web]# git log
commit 3cbe7c43e7ebb4a3b03dc9d003cb3310f03ebdbc
Author: duoli <duoli@example.com>
Date: Wed Nov 5 08:45:43 2025 +0800
feat(app): 过滤掉类型为tag的字段...