在 CentOS 上通过 SSH 连接后出现乱码,通常是字符编码不一致导致的。可按下面步骤逐一排查和解决。
locale
echo $LANG
正常应为:
LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8
临时设置:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
永久生效(CentOS 7/8):
localectl set-locale LANG=zh_CN.UTF-8
或编辑:
vi /etc/locale.conf
内容:
LANG="zh_CN.UTF-8"
locale -a | grep zh_CN
如果没有,安装语言包:
yum install -y glibc-langpack-zh
Window → Translation → Remote character set
选择:UTF-8
文件 → 属性 → 终端 → 编码
选择:UTF-8
Options → Session Options → Terminal → Appearance
Character encoding: UTF-8
编辑服务器:
vi /etc/ssh/sshd_config
确保没有:
AcceptEnv LANG LC_*
(如果有,可注释掉)
重启 SSH:
systemctl restart sshd
查看:
echo $TERM
应为:
xterm
xterm-256color
如果不是:
export TERM=xterm-256color
如果是已有文件乱码,说明之前用错误编码写入:
file 文件名
iconv -f GBK -t UTF-8 文件 > 新文件
LANG=zh_CN.UTF-8如果你能告诉我:
我可以给你更精确的解决方案。