CGI中,上传文件目录名中含有中文的问题

CGI中,上传文件目录名中含有中文的问题

CGI中,上传文件目录名中含有中文的问题
有个问题放在chinaunix.net里面很久了都没有人能够解决,不知这里怎么样.见下面的转贴
======================================================
如下代码
#! /usr/local/bin/perl
use CGI qw/:standard/;
my $q=new CGI;
print header;
if (param()){
print start_html('result'),h1('filename'),hr,param('upload_file');
}else{
print start_html('upload'),start_form(-method=>'post',-action=>url(-relative=>1)
,-enctype=>'multipart/form-data'),filefield(-name=>'upload_file',-size=>50,-maxl
ength=>80),submit,end_form;
}
print end_html;
~

问题环境: RedHat 9.0, perl 5.8.6

上传文件目录名中若含中文时,如C:\temp\中文\somefile, result页面返回的是文件内容而不是文件名.

如何解决.谢谢!

jazzrabbit
侠客



注册时间: 2004-07-17
最后登录: 2005-10-06
帖子总数: 14
精华帖子: 0
原创精华: 0
来自: 深圳

在线状态: ...在线...
发表于: 2005-08-13 01:33 发表主题:

--------------------------------------------------------------------------------

顶, 放了一个星期了还没人给答案, 是没有碰到此问题(我的安装有问题?),还是真不知道如何解决?



返回页首


jazzrabbit
侠客



注册时间: 2004-07-17
最后登录: 2005-10-06
帖子总数: 14
精华帖子: 0
原创精华: 0
来自: 深圳

在线状态: ...在线...
发表于: 2005-08-13 01:35 发表主题:

--------------------------------------------------------------------------------

关键是CGI::param('upload_file_var')返回的东西没有一致性---按文档应当返回是文件名而非文件内容.我在怀疑是否是CGI模块的一个中文bug.



返回页首


hoowa
精灵王



注册时间: 2003-04-29
最后登录: 2005-10-02
帖子总数: 325
精华帖子: 0
原创精华: 1


在线状态: ...离线...
发表于: 2005-08-13 22:20 发表主题:

--------------------------------------------------------------------------------

查一下关于CGI.pm和encode的介绍?可以不用中文吗?或是编码后的


_________________
Perl中文化项目 fund.perlchina.org

返回页首


jazzrabbit
侠客



注册时间: 2004-07-17
最后登录: 2005-10-06
帖子总数: 14
精华帖子: 0
原创精华: 0
来自: 深圳

在线状态: ...在线...
发表于: 2005-08-13 22:45 发表主题:

--------------------------------------------------------------------------------

因客户端用户可能使用中文的目录--操作系统允许这样作--我不能要求我的客户把上传文件一定放在一个只含有字母数字的目录里,这是个不应回避的问题.



返回页首


jazzrabbit
侠客



注册时间: 2004-07-17
最后登录: 2005-10-06
帖子总数: 14
精华帖子: 0
原创精华: 0
来自: 深圳

在线状态: ...在线...
发表于: 2005-08-13 22:51 发表主题:

--------------------------------------------------------------------------------

关于encode模块我也试过,如:
use encode 'gb2312';
则有更多的古怪问题出来(英文上传目录名都会有问题),我没有再进行深研.



[quote]print header; [/q.
[quote]print header; [/quote]
变成
[quote]print header(-charset=>'gb2312');[/quote]
即可
刚试过,果然正点,几分钟解开了几个月的结
太感谢了,我一直都没想到是客端html页面的编码问题,老在想server side 的code...

哈哈,专业医院和综合性医院还是有区别.这里的perl 高手多!