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'
