我不知道目标系统使用的是什么编码,但它看起来像是一台Windows机器,cp1252是西欧Windows机器上的常见编码
我正在尝试将图像文件上传到FTP服务器,文件名具有西欧字符。
file_name = 'müde_Mäuschen'
如果我将此文件上传到FTP,它会更改字母。FTP中的文件名变为müde_Mäuschen
。
注:
- 如果我使用FileZilla将文件上传到FTP,那么name就可以完美地工作,所以FTP服务器确实支持这个欧洲字母
- 我使用的是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机器上的常见编码