Debian/Ubuntu 中文环境设置:生成 UTF-8 locale 与排查乱码
本文适用于使用 APT 和 locales 的 Debian、Ubuntu 系统。中文区域设置控制程序语言、日期和数字格式;字体决定汉字能否显示。两者需要分别检查。
1. 安装区域设置工具
先查看当前环境,再安装所需工具:
sh
locale
locale -a
sudo apt update
sudo apt install localeslocale 显示当前会话设置,locale -a 列出已生成的区域设置。如果命令出现 Cannot set LC_*,通常应先检查设置的名称是否已生成。
2. 生成并选择中文区域设置
sh
sudo dpkg-reconfigure locales在列表中用空格键选中 zh_CN.UTF-8 UTF-8,保留已有应用需要的其他语言,然后确认生成。下一步选择 zh_CN.UTF-8 作为系统默认值。一般中文使用选择 UTF-8 即可,不必同时启用 GB2312、GBK 和 GB18030;只有明确依赖这些编码的旧程序才需要它们。


也可以在生成完成后单独修改默认语言:
sh
sudo update-locale LANG=zh_CN.UTF-8update-locale 修改系统默认配置,不会替换已经运行的进程环境。通常不需要把 LC_ALL 永久写入配置;它会覆盖各个 LC_* 分类设置。Debian 工具说明
3. 重新登录并验证显示
退出当前桌面或 SSH 会话后重新登录,再检查:
sh
locale
locale -a | grep -i zh_cn
printf '中文显示测试\n'确认 LANG 指向 zh_CN.UTF-8,已生成的列表包含对应条目;locale -a 可能将名称显示为 zh_CN.utf8。无需仅为这一设置强制重启服务器。若新会话仍使用旧语言,检查用户配置以及 SSH 客户端传入的 LANG、LC_* 是否覆盖系统默认值。
如果图形桌面显示方块,可先查询并安装发行版提供的中文字体,例如:
sh
apt-cache policy fonts-noto-cjk
sudo apt install fonts-noto-cjk重新打开对应应用后检查显示。若乱码出现在本地 SSH 终端,应调整本地终端的 UTF-8 编码和中文字体;给远程服务器安装桌面字体通常不会改变本地终端的渲染。纯文本控制台与图形终端也有不同的字体能力,不能仅凭方块字符判断 locale 设置失败。