Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2000281
  • 博文数量: 369
  • 博客积分: 10093
  • 博客等级: 上将
  • 技术积分: 4271
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-21 00:59
文章分类

全部博文(369)

文章存档

2013年(1)

2011年(2)

2010年(10)

2009年(16)

2008年(33)

2007年(146)

2006年(160)

2005年(1)

分类: LINUX

2009-04-14 08:58:11

发现用Windows资源管理器访问我在自己的Desktop上假设的vsftpd乱码的问题已经有一段时间了,该问题具体如下:
  1. 如果我在自己的Gentoo Linux上的ftp共享文件夹放置了中文文件名的文件,用Windows资源管理器浏览就会发现乱码,用Firefox和IE浏览则不会。
  2. 如果用Windows资源管理上传一个中文文件名的文件,则在本地的共享文件夹浏览为乱码,IE查看为正常中文。
  3. 将本地终端的字符编码改为UTF8,则由Windows资源管理器上传的文件的文件名为正常中文。由此可知,Windows资源管理器是用UTF8编码和我的vsftpd交互的。
为什么唯独Windows资源管理器用UTF8编码和vsftpd交互呢?并且印象中以前的vsftpd并没有这个问题,google了一下后,发现原来是:Windows资源管理器会在交互过程中发送“OPTS UTF8 ON”,如果ftp服务器能正确识别这条命令,那么后续的交互将都会以UTF8编码进行,否则不对编码做任何转换,即认为服务器和Windows编码一致;我的Gentoo Linux的本地编码为GB2312,而vsftpd总是假设服务器的运行环境为UTF8,这样问题就产生了。

为此,我针对vsftpd-2.0.7做了一个补丁。这个补丁引入了一个locale配置参数,用以表示服务器的本地编码,如果在和客户端交互的过程中遇到了"OPTS UTF8 ON"命令,那么后续交互的内容都在locale和UTF8之间做编码转换;否则,什么都不做,即假定本地编码和客户端编码一致。

补丁一并向vsftpd的维护者提交了,但到目前为止还没收到任何回复,故附在下面,以供和我有同样问题者使用。

文件:vsftpd-2.0.7-locale.diff.gz
大小:1KB
下载:下载

阅读(13001) | 评论(12) | 转发(0) |
给主人留下些什么吧!~~

wwenyunkui20132015-04-14 14:41:49

BenBear:没看到补丁啊……

附件已经不能下载,请重新上传一下吧,谢谢

回复 | 举报

wwenyunkui20132015-04-14 14:40:46

附件已经不能下载,请重新上传一下吧,谢谢

xiaosuo2009-05-26 20:49:05

那你得懂如何给源码打补丁,并制作成debian的安装包。

chinaunix网友2009-05-24 19:04:51

老师您好!看了你的文章,我获益良多。 这篇文章对我很有很,我也遇到了同样的问题,但是问题没有解决,还请不吝赐教。 OS:debian 5.1 vsftpd: version 2.0.7 你写的那个补丁能否在我的环境下使用,如何使用? 我的Email:luoyinbing@foxmail.com

xiaosuo2009-04-20 18:48:24

算了,不想在这个上面多费功夫。