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