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'