python 打印ftp目录中文名乱码,dir()方法、retrlines('LIST')都乱码,但nlst可以正常显示中文字符,但不能cwd到中文路径下。
ftplib.py的encoding = 'UTF-8',改过其他的编码,但都不行,在源码中添加过ftp.encoding=‘ ’也不行。
求佬解答,帮忙看一下

python 打印ftp目录中文名乱码,dir()方法、retrlines('LIST')都乱码,但nlst可以正常显示中文字符,但不能cwd到中文路径下。
ftplib.py的encoding = 'UTF-8',改过其他的编码,但都不行,在源码中添加过ftp.encoding=‘ ’也不行。
求佬解答,帮忙看一下

关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言问题核心:FTP服务器返回的文件名编码不是UTF-8,导致中文文件名乱码。 解决办法:
import ftplib
ftp = ftplib.FTP('ftp.example.com')
# 登录FTP服务器
ftp.login('username', 'password')
# 获取目录列表
data = []
ftp.dir(data.append)
# 打印文件名,使用GBK解码器
for line in data:
filename = line.split(None, 8)[-1]
print(filename.encode('iso-8859-1').decode('gbk'))
其中,filename.encode('iso-8859-1')是将FTP服务器返回的文件名编码转换为bytes格式,而decode('gbk')是将bytes格式转换为字符串格式,同时指定解码器为GBK。 注:根据FTP服务器返回的编码类型,可能需要使用不同的解码器。常见的编码类型包括GBK、GB2312、GB18030、Big5等。