#!/usr/bin/perl -w
use CGI;
$q=CGI->new;
print $q->header(),
$q->start_html(
-title => "Hello Perl"
),
$q->h1("perl cgi"),
$q->h2("信我者得永生"),
$q->end_html();
结果:
# ./test.pl
Content-Type: text/html; charset=ISO-8859-1
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>Hello Perl</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>perl cgi</h1><h2>信我者得永生</h2>
</body>
</html>
可以看出响应头和html meta元素中都是"iso-8859-1",所以要修改这两者。

修改:
# cat test.pl
#!/usr/bin/perl -w
use CGI;
$q=CGI->new;
print $q->header(
-Content_Type => "text/html; charset=\"utf-8\""
),
$q->start_html(
-title => "Hello Perl",
-encoding => "utf-8"
),
$q->h1("perl cgi"),
$q->h2("信我者得永生"),
$q->end_html();
# ./test.pl
Content-Type: text/html; charset="utf-8"
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>Hello Perl</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h1>perl cgi</h1><h2>信我者得永生</h2>
</body>
</html>
本文介绍如何在 Perl CGI 脚本中正确设置字符编码为 UTF-8,以确保中文等非英文字符的正常显示。通过修改响应头和 HTML meta 元素中的编码属性,可以解决网页中文乱码问题。
608

被折叠的 条评论
为什么被折叠?



