python 打印ftp目录中文名乱码,dir()方法、retrlines('LIST')都乱码,但nlst可以正常显示中文字符,但不能cwd到中文路径下。
ftplib.py的encoding = 'UTF-8',改过其他的编码,但都不行,在源码中添加过ftp.encoding=‘ ’也不行。
求佬解答,帮忙看一下
python 打印ftp目录中文名乱码
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
关注 让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
问题核心:FTP服务器返回的文件名编码不是UTF-8,导致中文文件名乱码。 解决办法:- 尝试更改FTP服务器的编码设置,让其返回的文件名编码为UTF-8。
- 如果无法更改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等。解决 无用评论 打赏 举报
悬赏问题
- ¥15 依据报错在原代吗格式的基础上解决问题
- ¥15 在虚拟机中安装flash code
- ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
- ¥20 verilog状态机方法流水灯
- ¥15 pandas代码实现不了意图
- ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
- ¥25 LT码在高斯信道下的误码率仿真
- ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
- ¥15 yolov5目标检测并显示目标出现的时间或视频帧
- ¥15 电视版的优酷可以设置电影连续播放吗?