[分享]解决vsftpd乱码(vsftpd-2.0.6)
-
- 帖子: 445
- 注册时间: 2007-08-27 17:31
-
- 帖子: 1
- 注册时间: 2008-04-24 14:32
包里的东西是RedHat的吧
下了附件,查看了Install文件和Makefile里面应该是红帽的?
-
- 帖子: 322
- 注册时间: 2007-11-06 13:38
Re: [分享]解决vsftpd乱码(vsftpd-2.0.6)
那个有完美解决2G以上文件不能显示的问题啊
-
- 帖子: 322
- 注册时间: 2007-11-06 13:38
Re: [分享]解决vsftpd乱码(vsftpd-2.0.6)
没有高手来解决2G问题啊
-
- 帖子: 31
- 注册时间: 2008-10-18 13:34
Re: [分享]解决vsftpd乱码(vsftpd-2.0.6)
你好!
我安装的版本是vsftpd-2.0.7,用这个方法也可解决乱码问题吗?

我安装的版本是vsftpd-2.0.7,用这个方法也可解决乱码问题吗?
-
- 帖子: 4
- 注册时间: 2008-04-04 21:13
Re: [分享]解决vsftpd乱码(vsftpd-2.0.6)
已经测试过,服务器ubuntu8.04-server,客户机xp,xp上传后编码正常
多谢楼主分享了,gj
多谢楼主分享了,gj
-
- 帖子: 1
- 注册时间: 2009-05-27 13:48
Re: [分享]解决vsftpd乱码(vsftpd-2.0.6)
楼主,我在编译时出现一个warning,麻烦帮我看看,谢谢!
错误信息:
-----------------
gcc -c str.c -O2 -Wall -W -Wshadow -idirafter dummyinc
str.c: In function `str_iconv_write':
str.c:682: warning: assignment discards qualifiers from pointer target type
str.c:680: warning: unused variable `print_buf'
str.c: In function `str_iconv_read':
str.c:757: warning: assignment discards qualifiers from pointer target type
str.c:755: warning: unused variable `print_buf'
gcc -c netstr.c -O2 -Wall -W -Wshadow -idirafter dummyinc
--------------------------
下面是str.c的相应位置
----------------
void
str_iconv_write(struct mystr* p_str)
{
iconv_t cd;
char *from_buf;
char *dyn_from_buf, *to_buf, *dyn_to_buf;
unsigned int from_len;
unsigned int dyn_from_len, to_len, dyn_to_len;
unsigned int print_buf;
from_buf = str_getbuf(p_str);
from_len = str_getlen(p_str);
p_str->p_buf = 0;
str_free(p_str);
private_str_alloc_memchunk(p_str, from_buf, from_len);
str_reserve(p_str, 2*from_len);
p_str->len=2*from_len;
vsf_sysutil_memclr(p_str->p_buf, p_str->len+1);
dyn_from_buf = from_buf;
dyn_from_len = from_len;
to_buf = p_str->p_buf;
dyn_to_buf = to_buf;
to_len = p_str->len;
dyn_to_len = to_len;
if((cd = vsf_sysutil_iconv_init_write())==(iconv_t)(-1))
{
bug("str_iconv_write");
}
while(vsf_sysutil_iconv(cd, &dyn_from_buf, &dyn_from_len, &dyn_to_buf, &dyn_to_len)==(size_t)(-1))
{
switch(errno)
{
case EILSEQ:
if((dyn_to_buf<to_buf+to_len)&&(dyn_to_buf>=to_buf))
{
vsf_sysutil_memcpy(dyn_to_buf, dyn_from_buf, 1);
dyn_to_buf+=1;
dyn_to_len-=1;
dyn_from_buf+=1;
dyn_from_len = from_buf + from_len -dyn_from_buf;
if(dyn_from_len==0) break;
}
else
break;
continue;
case EINVAL:
break;
case E2BIG:
str_reserve(p_str, to_len+dyn_from_len);
p_str->len=to_len+dyn_from_len;
dyn_to_len+=dyn_from_len;
dyn_to_buf = p_str->p_buf + (dyn_to_buf-to_buf);
to_buf = p_str->p_buf;
to_len = p_str->len;
continue;
default:
die("iconv set strange errno. Should not happenned!");
break;
}
break;
}
str_trunc(p_str, (p_str->len)-dyn_to_len);
vsf_sysutil_iconv_close(cd);
vsf_sysutil_free(from_buf);
}
查阅相关资料好像是数据类型有问题,但是不知道怎么处理
错误信息:
-----------------
gcc -c str.c -O2 -Wall -W -Wshadow -idirafter dummyinc
str.c: In function `str_iconv_write':
str.c:682: warning: assignment discards qualifiers from pointer target type
str.c:680: warning: unused variable `print_buf'
str.c: In function `str_iconv_read':
str.c:757: warning: assignment discards qualifiers from pointer target type
str.c:755: warning: unused variable `print_buf'
gcc -c netstr.c -O2 -Wall -W -Wshadow -idirafter dummyinc
--------------------------
下面是str.c的相应位置
----------------
void
str_iconv_write(struct mystr* p_str)
{
iconv_t cd;
char *from_buf;
char *dyn_from_buf, *to_buf, *dyn_to_buf;
unsigned int from_len;
unsigned int dyn_from_len, to_len, dyn_to_len;
unsigned int print_buf;
from_buf = str_getbuf(p_str);
from_len = str_getlen(p_str);
p_str->p_buf = 0;
str_free(p_str);
private_str_alloc_memchunk(p_str, from_buf, from_len);
str_reserve(p_str, 2*from_len);
p_str->len=2*from_len;
vsf_sysutil_memclr(p_str->p_buf, p_str->len+1);
dyn_from_buf = from_buf;
dyn_from_len = from_len;
to_buf = p_str->p_buf;
dyn_to_buf = to_buf;
to_len = p_str->len;
dyn_to_len = to_len;
if((cd = vsf_sysutil_iconv_init_write())==(iconv_t)(-1))
{
bug("str_iconv_write");
}
while(vsf_sysutil_iconv(cd, &dyn_from_buf, &dyn_from_len, &dyn_to_buf, &dyn_to_len)==(size_t)(-1))
{
switch(errno)
{
case EILSEQ:
if((dyn_to_buf<to_buf+to_len)&&(dyn_to_buf>=to_buf))
{
vsf_sysutil_memcpy(dyn_to_buf, dyn_from_buf, 1);
dyn_to_buf+=1;
dyn_to_len-=1;
dyn_from_buf+=1;
dyn_from_len = from_buf + from_len -dyn_from_buf;
if(dyn_from_len==0) break;
}
else
break;
continue;
case EINVAL:
break;
case E2BIG:
str_reserve(p_str, to_len+dyn_from_len);
p_str->len=to_len+dyn_from_len;
dyn_to_len+=dyn_from_len;
dyn_to_buf = p_str->p_buf + (dyn_to_buf-to_buf);
to_buf = p_str->p_buf;
to_len = p_str->len;
continue;
default:
die("iconv set strange errno. Should not happenned!");
break;
}
break;
}
str_trunc(p_str, (p_str->len)-dyn_to_len);
vsf_sysutil_iconv_close(cd);
vsf_sysutil_free(from_buf);
}
查阅相关资料好像是数据类型有问题,但是不知道怎么处理

-
- 帖子: 40
- 注册时间: 2010-04-21 19:33
Re: [分享]解决vsftpd乱码(vsftpd-2.0.6)
用了你的方法,问题不但没解决, 还变得更加难受,现在搞得我vsftpd卸载卸载不了,重装也重装不了,非常郁闷。
root@xiezhiwei-laptop:/home/xiezhiwei# apt-get install vsftpd
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
vsftpd 已经是最新的版本了。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
有 1 个软件包没有被完全安装或卸载。
需要下载 0B/141kB 的软件包。
解压缩后会消耗掉 0B 的额外空间。
正在预设定软件包 ...
选中了曾被取消选择的软件包 vsftpd。
(正在读取数据库 ...
正预备替换 vsftpd 2.2.2-3ubuntu6 (使用 .../vsftpd_2.2.2-3ubuntu6_i386.deb) ...
正在解压缩将用于更替的包文件 vsftpd ...
正在处理用于 man-db 的触发器...
正在处理用于 ureadahead 的触发器...
正在设置 vsftpd (2.2.2-3ubuntu6) ...
vsftpd user (ftp) already exists, doing nothing.
vsftpd directory (/srv/ftp) already exists, doing nothing.
vsftpd start/running, process 11554
显示说在runing,但是登录不上。
重启也出现问题:
root@xiezhiwei-laptop:/home/xiezhiwei# service vsftpd restart
restart: Unknown instance:
删除出现错误:
xiezhiwei@xiezhiwei-laptop:~$ sudo apt-get remove vsftpd
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包将被【卸载】:
vsftpd
升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 0 个软件包未被升级。
有 1 个软件包没有被完全安装或卸载。
解压缩后将会空出 471kB 的空间。
您希望继续执行吗?[Y/n]Y
(正在读取数据库 ... 系统当前总共安装有 165 个文件和目录。)
正在删除 vsftpd ...
dpkg:警告:当删除 vsftpd 时,无法删掉目录“/usr”:设备或资源忙 - 该目录会不会是一个挂载点呢?
dpkg:处理 vsftpd (--remove)时出错:
无法删除“/.”: 无效的参数
正在处理用于 ureadahead 的触发器...
正在处理用于 man-db 的触发器...
在处理时有错误发生:
vsftpd
E: Sub-process /usr/bin/dpkg returned an error code (1)
查错误代码,这样解决还是不行,彻底无语了。
cd /var/lib/dpkg
sudo mv info info.bak
sudo mkdir info
重新安装,在此为:
sudo apt-get --reinstall install
以前还能传英文文件,现在进都进不去了!

root@xiezhiwei-laptop:/home/xiezhiwei# apt-get install vsftpd
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
vsftpd 已经是最新的版本了。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
有 1 个软件包没有被完全安装或卸载。
需要下载 0B/141kB 的软件包。
解压缩后会消耗掉 0B 的额外空间。
正在预设定软件包 ...
选中了曾被取消选择的软件包 vsftpd。
(正在读取数据库 ...
正预备替换 vsftpd 2.2.2-3ubuntu6 (使用 .../vsftpd_2.2.2-3ubuntu6_i386.deb) ...
正在解压缩将用于更替的包文件 vsftpd ...
正在处理用于 man-db 的触发器...
正在处理用于 ureadahead 的触发器...
正在设置 vsftpd (2.2.2-3ubuntu6) ...
vsftpd user (ftp) already exists, doing nothing.
vsftpd directory (/srv/ftp) already exists, doing nothing.
vsftpd start/running, process 11554
显示说在runing,但是登录不上。
重启也出现问题:
root@xiezhiwei-laptop:/home/xiezhiwei# service vsftpd restart
restart: Unknown instance:
删除出现错误:
xiezhiwei@xiezhiwei-laptop:~$ sudo apt-get remove vsftpd
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包将被【卸载】:
vsftpd
升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 0 个软件包未被升级。
有 1 个软件包没有被完全安装或卸载。
解压缩后将会空出 471kB 的空间。
您希望继续执行吗?[Y/n]Y
(正在读取数据库 ... 系统当前总共安装有 165 个文件和目录。)
正在删除 vsftpd ...
dpkg:警告:当删除 vsftpd 时,无法删掉目录“/usr”:设备或资源忙 - 该目录会不会是一个挂载点呢?
dpkg:处理 vsftpd (--remove)时出错:
无法删除“/.”: 无效的参数
正在处理用于 ureadahead 的触发器...
正在处理用于 man-db 的触发器...
在处理时有错误发生:
vsftpd
E: Sub-process /usr/bin/dpkg returned an error code (1)
查错误代码,这样解决还是不行,彻底无语了。
cd /var/lib/dpkg
sudo mv info info.bak
sudo mkdir info
重新安装,在此为:
sudo apt-get --reinstall install
以前还能传英文文件,现在进都进不去了!


———— I Belive I Can! ————
-
- 帖子: 1
- 注册时间: 2011-03-01 21:24
Re: [分享]解决vsftpd乱码(vsftpd-2.0.6)
鉴定完毕,结果如下:
用IE打开时乱码,但是cuteftp打开确是中文
用IE打开时乱码,但是cuteftp打开确是中文