为了让大家愉快地通过ftp上传大文件,我搭建了vsftpd。
为了省事更愉快,我让大家直接通过Windows资源管理器来连接ftp服务上传文件。
于是,喜闻乐见的编码问题。
Windows放以前应该一律GBK,不管是GB2312还是GB18000,都无所谓,反正都是GBK编码。
不负责任的讲,在最近的版本中开始尝试utf-8。但是他的utf-8实现还有问题,至少在ftp这个情景模式下。
先把utf-8编码的文件名,gbk一下。连接vsftp服务时,询问vsftp是否支持utf-8。
vsftp返回肯定回答。
于是傻b windows就重新把gbk后的文件名又utf8了,接着上传了一个不完整的文件名。
抓包可证。
于是愤而修改代码。让vsftp告诉WindowsExplorer不使用utf-8模式。就GBK吧。
这样好歹客户端看起来正常,在服务端再做个简单转换,就行。麻烦无所谓,至少能恢复过来。
中间也查询了其他解决方案,convmvfs,还有专利呢!
随便试了下没按照预计的方式运行就搁置了。
懒~
vsftpd 源码修改记录,只要过编译,达到Always GBK的目的。
