上传到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
.
备注:
- 如果我使用 FileZilla 将文件上传到 FTP,那么名称就可以完美工作,所以 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 机器上的常见编码。
我正在尝试将图像文件上传到 FTP 服务器并且文件名具有西欧字符。
file_name = 'müde_Mäuschen'
如果我将此文件上传到 FTP,它会更改字母。 FTP 中的文件名变为 müde_Mäuschen
.
备注:
- 如果我使用 FileZilla 将文件上传到 FTP,那么名称就可以完美工作,所以 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 机器上的常见编码。