1. 程式人生 > 實用技巧 >pyftpdlib中文亂碼的解決之道

pyftpdlib中文亂碼的解決之道

pyftpdlib預設用常量字串設定了編碼:utf8

這本身沒有問題,但問題是windows和一些FTPclient使用的不是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' 在方法中 defhandle_auth_success(。。。)修改一下(因為改了AbstractFS建構函式): self.fs=self.abstracted_fs(home,self,self.encoding) 三、使用: 定義好handler之後,將這賦給ftpserver前: handler.encoding='gbk'