pyftpdlib中文亂碼的解決之道
阿新 • • 發佈:2020-09-12
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.setterdef 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'