在管理或使用 CentOS 服务器时,一个常见的挑战是让系统正确显示中文字符,默认情况下,许多 CentOS 安装版本(尤其是最小化安装)仅配置了英文环境(en_US.UTF-8),这会导致在处理包含中文的文件名、日志信息或应用程序界面时出现乱码(通常显示为“?”或方框),要解决这个问题,核心在于为系统安装中文语言包并正确配置系统的区域设置,本文将详细、系统地介绍如何在 CentOS 7 及更高版本上实现这一目标。

理解 Locale 的核心概念
在开始操作之前,理解“Locale”是什么至关重要,Locale 是一组定义了语言、国家/地区、字符集、时间格式、货币格式等信息的规范,Linux 系统通过 Locale 来决定如何显示和处理特定于地域的数据,关键的环境变量包括:
LANG:默认的 Locale 设置,如果没有设置其他LC_*变量,系统将使用此设置。LC_ALL:一个强制覆盖所有其他LC_*变量的设置。LC_CTYPE:用于字符分类和字符串处理,决定了系统支持的字符集。LC_MESSAGES:用于程序界面的本地化消息(如错误提示、菜单等)。
要让 CentOS 显示中文,我们的目标就是将这些变量,特别是 LANG,设置为支持中文的值,如 zh_CN.UTF-8。zh_CN 代表中文(中国),而 UTF-8 是一种通用的、支持全球几乎所有字符的编码格式,是现代系统的首选。
第一步:检查当前系统的 Locale 设置
在进行任何更改之前,首先需要了解当前系统的状态,可以通过以下命令查看:
locale
该命令会输出当前所有 LC_* 相关变量的值,你会看到类似 LANG=en_US.UTF-8 的输出,另一个更直接的命令是:
echo $LANG
这将只显示 LANG 变量的值,如果输出不是 zh_CN.UTF-8 或其他中文 Locale,那么就需要进行配置。
第二步:安装中文语言包
CentOS 默认可能不包含中文语言包,你需要手动安装它,根据你的 CentOS 版本,使用相应的包管理器。
对于 CentOS 7:
CentOS 7 使用 yum 作为包管理器,中文语言包通常包含在 glibc-langpack-zh 中。
sudo yum install glibc-langpack-zh
对于 CentOS 8 / CentOS Stream / RHEL 8 及以上:
这些版本使用 dnf 作为包管理器,包名与 CentOS 7 相同。

sudo dnf install glibc-langpack-zh
在执行安装命令后,系统会自动下载并安装所需的中文语言支持文件,安装完成后,你可以使用 locale -a | grep zh_CN 命令来验证系统是否已经识别了中文 Locale,如果能看到 zh_CN.utf8 的输出,说明安装成功。
第三步:配置系统默认 Locale
安装完语言包后,下一步就是告诉系统使用它,这里介绍两种主流方法:临时生效和永久生效。
临时设置(仅对当前会话有效)
如果你想测试一下效果,或者只想在当前终端会话中使用中文,可以直接通过 export 命令设置环境变量。
export LANG=zh_CN.UTF-8
执行后,当前终端的新程序启动时就会使用中文环境,但这种方法有一个缺点:一旦你关闭终端或重新登录,设置就会失效。
永久设置(推荐)
要让设置在重启后依然生效,需要修改系统的配置文件,现代的 CentOS 系统推荐使用 localectl 命令,这是 systemd 提供的工具,可以安全、统一地管理系统 Locale。
sudo localectl set-locale LANG=zh_CN.UTF-8
执行此命令后,系统会自动修改 /etc/locale.conf 文件,无需手动编辑,既方便又不易出错。
替代方法:手动编辑配置文件
你也可以直接编辑 /etc/locale.conf 文件。
sudo vi /etc/locale.conf
修改为:
LANG="zh_CN.UTF-8" 保存并退出,这种方法同样有效,但使用 localectl 是更现代、更规范的做法。

下表小编总结了两种永久设置方法的对比:
| 方法 | 命令 | 优点 | 缺点 |
|---|---|---|---|
| localectl (推荐) | sudo localectl set-locale LANG=zh_CN.UTF-8 | 官方推荐,自动化,不易出错 | 需要理解 systemd 工具链 |
| 手动编辑 | sudo vi /etc/locale.conf | 直观,无需额外工具 | 容易出现拼写错误,格式不统一 |
第四步:验证与重启
完成上述配置后,最简单的验证方法是重新登录或重启服务器,重启后,再次检查 LANG 变量:
echo $LANG
此时输出应该是 zh_CN.UTF-8,你可以尝试创建一个包含中文字符的文件,或者查看一些日志,看是否还能正常显示。
一个重要的提醒:客户端工具的配置
请务必注意,服务器端的配置只是成功的一半,如果你通过 SSH 客户端(如 PuTTY, Xshell, MobaXterm)或本地终端工具连接服务器,这些客户端也必须配置为使用 UTF-8 编码,并且你的电脑上需要有支持中文显示的字体,否则,即使服务器配置完全正确,你看到的依然是乱码,请确保你的 SSH 客户端在“设置”或“外观”选项中,将字符编码设置为 UTF-8。
相关问答 FAQs
Q1:zh_CN.UTF-8 和 zh_CN.GB2312 或 zh_CN.GBK 有什么区别?我应该用哪个?
A: 它们是不同的字符编码标准。GB2312 是早期的简体中文编码,只包含约 6763 个汉字,已无法满足现代需求。GBK 是其扩展,收录了更多汉字,而 UTF-8(Unicode Transformation Format-8)是一种国际通用的可变长度编码,能够表示 Unicode 标准中的所有字符,包括世界上几乎所有的语言。强烈推荐使用 zh_CN.UTF-8,因为它兼容性最好,是互联网和现代软件的默认标准,可以避免在不同系统和平台间交换文件时出现编码问题。
Q2:我已经按照步骤设置了,为什么有些软件(如 git log 或某些特定应用的日志)还是显示英文?
A: 这种情况通常有两个原因,第一,该软件本身可能没有提供完整的中文翻译包,所以即使系统环境是中文,它也只能回退到默认的英文界面,第二,某些软件可能有自己独立的语言配置机制,它们的优先级可能高于系统的 LANG 变量,对于这类软件,你需要查阅其官方文档,寻找如何单独设置其语言环境的方法,例如通过修改其专属的配置文件或在启动时传递特定的环境变量,系统级的 LANG 设置是基础,但并非对所有 100% 的应用程序都起决定性作用。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复