CentOS 7改中文需先安装zh_CN.UTF-8语言包(推荐yum groupinstall "Chinese Support"),再通过localectl set-locale LANG=zh_CN.UTF-8或编辑/etc/locale.conf写入LANG=zh_CN.UTF-8永久生效,最后验证locale输出及man页等组件是否同步中文。
CentOS 7 默认语言是 en_US.UTF-8,想改成中文,不能只改一个地方——必须先确认中文语言包已安装,再设置全局 LANG,否则终端、日志、命令输出依然显示英文,甚至出现乱码。
zh_CN.UTF-8 语言环境直接执行:locale -a | grep zh_CN.UTF-8。如果返回空,说明没装中文支持;如果返回 zh_CN.UTF-8,说明语言包已就位,可跳过安装步骤。
常见错误现象:执行 locale 显示 LANG=en_US.UTF-8,但 locale -a 找不到 zh_CN.UTF-8 ——此时强行写入配置文件也没用,localectl 或 /etc/locale.conf 会静默失败。
kde-l10n-Chinese 或 glibc-common 里,但单独装 glibc-common 不够,它只提供基础字符集,不带本地化规则yum groupinstall "Chinese Support",它会自动拉取 kde-l10n-Chinese、字体、输入法框架等全套组件LANG=zh_CN.UTF-8 的两种等效方式只要 zh_CN.UTF-8 已存在,就可用以下任一方式生效,效果完全一致:
localectl set-locale LANG=zh_CN.UTF-8 ——这是 systemd 推荐方式,会自动写入 /etc/locale.conf,且立即影响新启动的 shell/etc/locale.conf,写入单行:LANG=zh_CN.UTF-8(注意不是 LANG="zh_CN.UTF-8",引号会导致解析失败)别碰 /etc/sysconfig/i18n ——那是 CentOS 6 的路径,CentOS 7 读它无效;也别改用户级的 ~/.bashrc,那只是临时生效,且不作用于系统服务、cron、systemd unit。
重启终端或重新登录后,运行 locale,确认输出中 LANG=zh_CN.UTF-8 且所有 LC_* 变量都未被覆盖(如 LC_TIME、LC_MESSAGES 应继承 LANG 值)。
容易踩的坑:
locale 显示正确,但 ls 列中文文件名仍乱码 → 检查文件系统是否为 UTF-8 编码(ext4 默认支持,但 NFS 或旧挂载可能不默认启用 iocharset=utf8)journalctl 日志还是英文 → 确认 LANG 是系统级设置,不是仅用户级;某些服务(如 sshd)可能缓存旧 locale,需 systemctl restart sshd
date 显示英文星期/月份 → 说明 LC_TIME 被单独设成了英文,删掉 /etc/locale.conf 中多余的 LC_TIME=... 行即可最常被忽略的一点:改完语言后,man 页面默认仍是英文——因为 man 包是独立安装的,需额外执行 yum install man-pages-zh-CN 才能看中文手册。