编码cgi脚本UTF-8与否?

时间:2011-09-17 04:53:51

标签: perl utf-8 cgi

在阅读了有关编码和字符集以及所有内容的基础知识后,我将所有网站编码为UTF-8。 我刚刚上传了一个UTF-8编码的cgi脚本。它从HTML表单(也是UTF-8)读取数据,并且我一直收到500错误。 我甚至做了一个脚本只是为了说“OK”而且它不起作用。我的意思是,没有阅读表格,没有阅读,只是打印一条线。

#!/usr/bin/perl
use utf8;
BEGIN {
    $| = 1;
    open (STDERR, ">&STDOUT");
    print qq~Content-type: text/html\n\n~;
}
print "ok";

我已移动使用“utf8;”在BEGIN块下面,没有一个正常工作。因此,500错误表示脚本没有被读取,因为它没有755权限(它有)。

所以,我的问题不是关于读取UTF8数据,而是关于运行UTF8编码的perl脚本。

我应该保持我的脚本ANSI编码(并解决从HTML表单中读取utf8数据)吗?

我在Linux上的Apache上运行Perl 5.8。并且...如果我将脚本编码为Ansi,它运行良好(除了读取UTF-8字符,但这是另一个故事)

1 个答案:

答案 0 :(得分:4)

use utf8仅表示您的Perl源代码是UTF-8。它与脚本是否可以处理表单中的UTF-8数据无关。

如果您添加use utf8;行时脚本停止工作,那么我会看到两个可能的问题:

  1. 您的Perl安装有问题,因此在尝试加载utf8.pm或(更可能)

  2. 时出现错误
  3. 将文件另存为UTF-8时,编辑器会插入BOM。 BOM会干扰#!处理,因此您的脚本无法运行。