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

python 打印ftp目录中文名乱码

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

img

  • 写回答

5条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 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日

悬赏问题

  • ¥15 依据报错在原代吗格式的基础上解决问题
  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?