文件名中的一些字母(ü,ä)在上传到Python中的FTP后变成乱码



我正在尝试将图像文件上传到FTP服务器,文件名具有西欧字符。

file_name = 'müde_Mäuschen'

如果我将此文件上传到FTP,它会更改字母。FTP中的文件名变为müde_Mäuschen

注:

  1. 如果我使用FileZilla将文件上传到FTP,那么name就可以完美地工作,所以FTP服务器确实支持这个欧洲字母
  2. 我使用的是Windows 10,Python 3.9.0

代码:

from ftplib import FTP
ftp = FTP("Login Details")
path = r'D:ftp_test'
file_name = 'müde_Mäuschen.jpg'
ftp.storbinary(f"STOR {file_name}", open(path+'\'+file_name, "rb"))

您需要指定远程系统的文件系统编码:

ftp = FTP('Login Details', encoding='cp1252')

否则,文件名和目录名将使用本地系统的默认编码进行解码。


我不知道目标系统使用的是什么编码,但它看起来像是一台Windows机器,cp1252是西欧Windows机器上的常见编码

最新更新