【问题标题】:If upload file contains UTF-8 characters then CGI object creation fails when submitting the html form如果上传文件包含 UTF-8 字符,则提交 html 表单时 CGI 对象创建失败
【发布时间】:2014-05-12 07:15:09
【问题描述】:

以下是html文件内容:

<form name="myForm" action="/cgi-bin/bulkurls.cgi" enctype="multipart/form-data" 
          method="post" >


    <td align="right">Bulk Provisioning File
    </td>
    <td align="left"><input name="user_list" type="file">
    </td>
  </tr>
  <tr>
    <td align="center" colspan="2"><input class="ButtonNormal150" name="upload"  type="submit" 
        value="Process File">

CGI 脚本是:

use CGI;
use strict;

my $query = new CGI;

此时 CGI 对象创建失败,只有文件包含 UTF 字符。如果是纯文本,它工作正常。这究竟是什么原因?

【问题讨论】:

  • “CGI 对象创建失败”是什么意思?程序会死吗?你收到undef 回复了吗?
  • 您的 HTML 无效。 &lt;td&gt; 不能是 &lt;form&gt; 元素的子元素。
  • 你为什么不use warnings?服务器错误日志说明了什么?
  • 请保留所有 元素。只考虑功能。 CGI 语言是 PERL。
  • 无效的 HTML 可能会破坏表单提交(它可能不在这里,但是当您需要人们免费帮助时,最好先消除machine detectable 错误)。 There is no such language as "PERL"

标签: html perl utf-8 cgi


【解决方案1】:

您可以尝试像这样设置 utf8。同时尝试使用最小的有效 HTML 页面进行测试。

HTML:

<html>
<body>
<form 
name="myForm" 
action="/cgi-bin/bulkurls.cgi" 
enctype="multipart/form-data" 
method="post" >
<input name="user_list" type="file">
<input class="ButtonNormal150" name="upload"  type="submit" value="Process File">
</form>
</body>
</html>

bulkurls.cgi:

use strict;
use warnings;
use utf8;
use CGI qw(-utf8);

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签