下面是一篇可直接放进 Hugo 的日志,偏记录型,干净可复用。
问题现象
从 Windows 通过 SSH 连接 mac,执行 ls 时,目录中的中文文件名全部显示为乱码,例如一串问号或不可读字符。本地 mac 终端显示正常。
初步判断
文件本身未损坏。
问题出在 SSH 会话中的字符编码环境,终端按非 UTF-8 方式解析文件名。
排查过程
1. 确认文件名是否正常
在 mac 本机终端 执行:
ls
中文显示正常,说明文件系统无问题。
2. 检查 SSH 会话的语言变量
在 SSH 登录后的 mac 执行:
locale
发现 LANG、LC_ALL 为空或不包含 UTF-8。
3. 设置 mac shell 的 UTF-8 环境
mac 默认使用 zsh,编辑配置文件:
nano ~/.zshrc
加入:
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
使配置生效:
source ~/.zshrc
重启ssh服务
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist&&sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
重新 SSH 登录。
4. 检查 Windows 侧终端编码
- Windows Terminal / PowerShell:默认 UTF-8
- CMD:需手动切换
chcp 65001
- Git Bash:一般无需处理
5. 验证
在 SSH 会话中执行:
echo $LANG
只要输出包含 UTF-8,中文文件名即可正常显示。
结论
中文文件名乱码多半由终端字符编码不一致引起。 mac 本机显示正常,SSH 会话异常,优先检查 locale 与终端编码。
这个问题属于环境配置问题,修正一次即可长期生效。