在阅读了有关编码和字符集以及所有内容的基础知识后,我将所有网站编码为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字符,但这是另一个故事)
答案 0 :(得分:4)
use utf8
仅表示您的Perl源代码是UTF-8。它与脚本是否可以处理表单中的UTF-8数据无关。
如果您添加use utf8;
行时脚本停止工作,那么我会看到两个可能的问题:
您的Perl安装有问题,因此在尝试加载utf8.pm
或(更可能)
将文件另存为UTF-8时,编辑器会插入BOM。 BOM会干扰#!
处理,因此您的脚本无法运行。