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

Some letters (ü, ä) in file name turning to gibberish after uploading to FTP in Python

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

file_name = 'müde_Mäuschen'

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

备注:

  1. 如果我使用 FileZilla 将文件上传到 FTP,那么名称就可以完美工作,所以 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 机器上的常见编码。