pyftpdlib中文乱码的解决之道


pyftpdlib默认用常量字符串设置了编码:utf8

这本身没有问题,但问题是windows和一些FTP client 使用的不是utf8,所以中文乱码。甚至无法进入自己建立的中文目录

解决之道:修改两个源文

为了可能再使用别的编码,所以改得略复杂点:

 

一、filesystem.py

       在类 AbstractedFS 中:

  增加属性:encoding

    

    @property
    def encoding(self):
        return self.__encoding

    @encoding.setter
    def encoding(self,value):
        self.__encoding=value

  修改__init__:

def __init__(self, root, cmd_channel,encoding):
    #...
    #...
    self.__encoding=encoding

     将本文件中所有'utf8'替换为:self.encoding

    保存修改

二、修改handler

      在类 FTPHandler 中:

     同样增加属性encoding

     

    @property
    def encoding(self):
        return self.__encodingg
    @encoding.setter
    def encoding(self,value):
        self.__encoding=value
        self.fs.encoding=value

    在__init__中增加:

            self.__encoding='utf8'
   在方法中 def handle_auth_success(。。。)修改一下(因为改了AbstractFS构造函数):        
          self.fs = self.abstracted_fs(home, self,self.encoding)
三、使用:
    定义好handler之后,将这赋给ftpserver前:
    handler.encoding='gbk'
 

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM