CentOS7 ssh终端中文文件名显示问号修复:别让乱码毁了你的远程操作
远程连上CentOS7,一敲ls,满屏“????.txt”瞬间血压拉满。不是文件丢了,是系统语言没对上号。今天把话挑明:三分钟搞定中文乱码,以后再也不用猜文件名。

先验伤:到底哪一步翻车
99%的问号来自两处——服务器没装中文包,或者SSH客户端编码没设UTF-8。把这两窟窿堵上,问号立刻现原形。
服务器端:两条命令让它说人话
登录后先整环境:
- 装语言包

yum install -y glibc-langpack-zh装完别急着庆祝,这只是弹药。
- 把系统语言改成中文
localectl set-locale LANG=zh_CN.UTF-8执行完重新SSH登录,让配置生效。再ls,九成问号已变回汉字。

客户端:Xshell、PuTTY、Terminal一个都别放过
服务器已说中文,客户端也得听懂。
- Xshell:文件→属性→终端→编码→选UTF-8→确定。
- PuTTY:Window→Translation→Remote character set→选UTF-8→保存会话。
- macOS Terminal:偏好→描述文件→高级→文本编码→UTF-8。
改完重开标签页,旧会话不生效。
漏网之鱼:文件名本身被压成GBK
如果历史文件是GBK编码,仍显示问号,用convmv批量转码:
convmv -f GBK -t UTF-8 --notest -r /目标目录
一行命令,回车瞬间完成整容。
一键自检脚本:10秒确认环境
把下面内容保存成checklang.sh,丢到服务器跑:
#!/bin/bash
echo "当前语言:$LANG"
echo "本地可用中文:$(locale -a | grep zh_CN)"
echo "终端编码:$LC_CTYPE"
三项都带UTF-8,说明配置已齐活;缺啥补啥,不再抓瞎。
常见作死现场TOP3
- 只改客户端不改服务器——问号照样蹦迪。
- 用默认的LANG=C——系统铁了心说英文。
- Win10自带SSH——老版本默认GBK,升级或换客户端。
实测效果:问号秒变汉字
按上面顺序操作,新登录窗口ls,原本“????.pdf”立刻回魂成“财务报告.pdf”。再scp、tar、mv,文件名全程不再翻车。
下次遇到CentOS7 SSH中文问号,别急着重装系统,先照这个清单打钩。三分钟搞定,比拍桌子骂娘快多了。
