在 Debian 上遇到 FTP 乱码,通常是因为 客户端与服务器字符编码不一致(如服务器用 GBK,客户端用 UTF-8,或反过来)。下面按常见场景给出解决方案。
是文件名乱码,还是文件内容乱码?
你用的是哪种 FTP?
编辑配置文件:
sudo nano /etc/vsftpd.conf
确保有以下内容:
utf8_filesystem=YES
重启服务:
sudo systemctl restart vsftpd
✅ 适合 新系统 / 客户端支持 UTF-8
vsftpd 本身不支持 GBK,但可以:
convmv 转换文件名编码示例(GBK → UTF-8):
convmv -f gbk -t utf-8 -r --notest /srv/ftp
ftp 不支持编码设置,容易乱码,建议用 lftp。
sudo apt install lftp
连接时指定编码:
lftp ftp://user@host
set ftp:charset gbk
set file:charset utf-8
或一行:
lftp ftp://user@host -e "set ftp:charset gbk; ls"
设置路径:
站点管理器 → 字符集 → 强制 UTF-8
或
强制 GBK(针对老 Windows FTP)
在 Debian 上统一为 UTF-8:
sudo dpkg-reconfigure locales
选择:
en_US.UTF-8
zh_CN.UTF-8
并设置默认:
sudo update-locale LANG=zh_CN.UTF-8
| 场景 | 推荐方案 |
|---|---|
| Debian ↔ Linux 客户端 | UTF-8 + vsftpd |
| Debian ↔ Windows 老客户端 | GBK + FileZilla |
| 命令行 | lftp |
| 文件名已乱码 | convmv 修复 |
如果你愿意,可以告诉我:
我可以给你精确配置示例。