CGIモジュールメモ

use CGI qw( -no_xhtml ); # CGIモジュールの吐くHTMLがXHTMLでなくなる。

テンプレート使う以上は意味はないが……。

print OUT $q->header(
	-charset=>'UTF-8'
); # HTMLヘッダーでの文字コードの指定。
print OUT $q->start_html(
	-lang=>'ja-JP',
	-encoding=>'UTF-8',
	-title=>'タイトル',
	-head=>$q->meta({
		-http_equiv=>'Content-Type',
		-content=>'text/html; charset=UTF-8'
	})
); # 文字コードをutf8で出力予定の時用

以下、この一文で生成されるHTML

<!DOCTYPE html
	PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
	 "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja-JP"><head><title>タイトル</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>

ここまでやれば、どんなバカなブラウザでもutf8であることを誤解せんじゃろう。多分。おそらく。だといいなあ。
欲をいえば、文字コード指定のmeta要素は、title要素よりも先に記述されるべきなんだが。本来は。
ちなみに、 no_xhtml プラグマを使わなかった場合のstart_html()の生成HTMLは、以下のとおり。

<!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="ja-JP" xml:lang="ja-JP">
<head>
<title>UTF-8実験</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>