滴滴答答滴滴答 2024-04-09 16:57 采纳率: 50%
浏览 20

python 打印ftp目录中文名乱码

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

img

  • 写回答

5条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-04-09 16:57
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题核心:FTP服务器返回的文件名编码不是UTF-8,导致中文文件名乱码。 解决办法:
    1. 尝试更改FTP服务器的编码设置,让其返回的文件名编码为UTF-8。
    2. 如果无法更改FTP服务器编码,可以尝试对返回的文件名进行转换。根据FTP服务器返回的编码类型,使用相应的解码器进行解码。 例如,如果FTP服务器返回的编码是GBK,可以使用以下方法对返回的文件名进行解码:
    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等。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月9日