【发布时间】:2011-11-19 03:12:16
【问题描述】:
在阅读了有关编码和字符集的基础知识以及所有这些内容之后,我一直将我的所有网站都编码为 UTF-8。 我刚刚上传了一个 UTF-8 编码的 cgi 脚本。它从 HTML 表单(也是 UTF-8)读取数据,我不断收到 500 错误。 我什至编写了一个脚本只是为了说“好的”,但它不起作用。我的意思是,不读取表单,不读取任何内容,只打印一行。
#!/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 字符的读取,但这是另一回事)
【问题讨论】:
-
注释掉你的
open行,看看会发生什么。 -
你的脚本中没有非ASCII字符,只要没有127以上代码的字符,UTF-8就完全等价于ASCII。你说如果你“编码脚本就行”到安西”。你究竟是如何改变它以使其工作的?在您发布的代码中,不需要 BEGIN 块;删除
BEGIN {和}应该没有区别。 -
检查服务器的日志文件中的实际错误。说你有 500 错误是没有用的。