本地搜

解决Serv-U 7.0版本以上的汉字乱码问题

2011年08月13日 00:00 发布人: 本地搜 7161

  当存在汉字命名的路径和文件名时,在默认情况下都要进行编码的。但是对发布的FTP链接按正常的编码后,无论网际快车、迅雷、CuteFTP、IE等工具均不能打开链接,在ServU中监视,发现汉字均无法解析,全部为???这样的符号。那么是否编码有误呢,按GB2312、GB18030、BIG5、UTF8、UTF16编码均不正确,而在IE中逐级打开FTP目录却正常,说明问题肯定在编码上。

  经过反复观察和测试,发现先按UTF8编码,然后用GB18030解码回来,再进行UTF8编码,这样的链接就可以打开了,由于这样的非正常编解码,必定存在非法字符,用系统提供的转换函数容易出现“?”字符,可以考虑自己编写函数来转换。而账号是汉字的,路径中的账号编码只能采用一次UTF8编码,但发现有些汉字的传递有截尾现象,无法解决,看来要避免使用汉字账号。

  进一步探究,在FTP中有指令 OPTS UTF8 OFF,只要向服务发送一次,就会关闭FTP服务器的UTF8编码,这样在路径中就可以直接使用汉字。这是这只能在CuteFTP这样的专用软件中才能实现,而且不是全局的,每次更换账户连接都要执行一次。

  如果拥有FTP服务器的管理权限,可以如下永久设置这一选项,以ServU7.0以上版本为例:

解决Serv-U 7.0版本以上的汉字乱码问题
解决Serv-U 7.0版本以上的汉字乱码问题

  即使路径可以使用汉字了,但是账号对汉字的支持依然不理想,尤其是在路径中传递账号时。

  附FTP链接格式:ftp://账号:密码@主机地址或域名:端口/路径/路径/文件名.扩展名

标签: Serv-U 编码 乱码 FTP