在 CentOS 上搭建 FTP 服务器(如 vsftpd)出现乱码,通常不是“服务器坏了”,而是字符编码不一致导致的。下面按常见原因给你说明,并给出解决办法。
FTP 本身不传输编码信息,文件名用什么编码完全看:
✅ 解决方式
站点管理器 → 字符集 → 强制 UTF-8✅ 推荐方案
检查服务器 locale:
locale
正常应为:
LANG=zh_CN.UTF-8
LC_ALL=zh_CN.UTF-8
如果不是,修改:
sudo localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
sudo vi /etc/locale.conf
内容:
LANG="zh_CN.UTF-8"
然后重启或重新登录。
如果文件是从 Windows 拷贝过来、或用 GBK 创建:
ls | file -
转换文件名编码(示例):
convmv -f GBK -t UTF-8 -r --notest /ftpdir
| 客户端 | 默认编码 | 建议 |
|---|---|---|
| FileZilla | 自动/UTF-8 | ✅ 推荐 |
| Windows 资源管理器 | GBK | ❌ 易乱码 |
| WinSCP | UTF-8 | ✅ 推荐 |
| 命令行 ftp | 看终端 | ❌ 不稳定 |
如果你愿意,可以告诉我:
我可以直接给你一份“可复制配置”。