我将MySQL数据库和perl脚本转换为UTF-8。最后它起作用了,但它在某种程度上是一个疯狂的解决方案。这就是我所做的:
MYSQL数据库:完全设置为UTF8
PERL-SCRIPTS:源代码转换为UTF8编码。 “使用utf8;”在顶部。
HTML报头:
print "Content-type: text/html\n\n";
和
<META CHARSET='UTF-8'>
数据库连接:
$dbh->{'mysql_enable_utf8'} = 1;
和
"set names 'utf8';"
现在,一切都适用于西里尔(俄语)字符:数据库中的输入,输出和处理,很好。但我遇到的问题是德国的“Umlaute”:äöü。它们未在浏览器中正确显示。它们仅在我在HTML元素旁边的注释中放置一个西里尔字符时才起作用,该注释不显示该字符,例如像这样的东西:
<!-- Э -->
这是一个尴尬的解决方案,我知道必须有一个没有它的解决方案。有谁知道可能缺少什么。每个答案都要提前感谢!
UPDATE:
谢谢你的回复。我想,即使是最简单的HTML文件我也有问题。我使用这个源代码:
#!/usr/bin/perl
use utf8;
print "Content-Type: text/html; charset=utf-8\n\n";
print <<END;
<HTML>
<HEAD>
<META CHARSET='UTF-8'>
</HEAD>
<BODY>
<H1>The Country Österreich</H1>
</BODY>
</HTML>
END
结果可见于:
http://5mls.com/test_bad.cgi
如您所见,“Ö”未显示
现在有效的代码:
#!/usr/bin/perl
use utf8;
print "Content-Type: text/html; charset=utf-8\n\n";
print <<END;
<HTML>
<HEAD>
<META CHARSET='UTF-8'>
</HEAD>
<BODY>
<H1>The Country Österreich<!-- Э --></H1>
</BODY>
</HTML>
END
结果可见于:
http://5mls.com/test_good.cgi
这次“Ö”正确显示,因为评论中的俄语字符“Э”。有人知道,“Ö”如何在没有俄文字符的情况下展示吗?
答案 0 :(得分:0)
使用utf8处理perl脚本和MySQL时,我也遇到了问题。
使用浏览器中的Web开发人员工具检查cgi脚本发送到浏览器的内容。 然后使用编码模块尝试编码perl发送到您的浏览器的内容:
use Encode qw(encode);
并对输出进行编码:
my $austria = "<HTML>
<HEAD>
<META CHARSET='UTF-8'>
</HEAD>
<BODY>
<H1>The Country Österreich</H1>
</BODY>
</HTML>";
print encode('utf-8', $austria);
此外,您的test_bad.cgi脚本适用于我,并在浏览器中输出正确的输出。