在 Ubuntu 上搭建 FTP 服务器(如 vsftpd、proftpd 等)时出现乱码,通常不是“服务器坏了”,而是字符编码不一致导致的。下面按常见原因给你梳理一下。
FTP 协议早期只支持 ASCII(英文),中文文件名依赖:
如果两边不一致,就会乱码。
✅ 常见组合:
Ubuntu 默认是 UTF-8,但有些老系统或精简系统可能不是。
locale
正常应看到:
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
sudo apt install locales
sudo dpkg-reconfigure locales
选中 en_US.UTF-8 或 zh_CN.UTF-8
vsftpd 不支持自动编码协商
它只会“原样传文件名”,编码由客户端决定。
站点管理器 → 字符集 → 强制 UTF-8
ProFTPD 支持编码配置:
<Global>
UseEncoding utf8 cp936
</Global>
utf8:服务器cp936:Windows 客户端(GBK)修改后:
sudo systemctl restart proftpd
如果你看到的是:
????.txt
䏿–‡.txt
说明:
convmv -f gbk -t utf8 --notest *
✅ 统一使用:
❌ 避免使用:
locale 输出我可以给你针对性的配置方案。