htmlで呼び出したCGIの出力が文字化けする
下記のInput.cgiというスクリプト(改行コードLF, 文字コードUTF-8)
----------------
#! /usr/bin/perl
$method = $ENV{'REQUEST_METHOD'};
if ($method eq 'POST') {
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
} elsif ($method eq 'GET') {
$buf = $ENV{'QUERY_STRING'};
}
print "content-type: text/html\n\n";
print "メソッドは$methodでした。<br>\n";
print "受け取ったデータは$bufでした。\n";
----------------
があります。これをブラウザで見ると(入力なしのまま)
「メソッドはPOSTでした。
受け取ったデータはxxxでした」
と正常に表示されます。
次に次の内容のhtml(改行はLF,文字コードはShiftJIS)
-------------
<html><head>
<title>FORMによるデータ転送</title></head>
<body>
<form method="POST" action="myInput.cgi">
<input type="text" name="text"><br>
<input type=submit value="送信">
<input type=reset value="取消">
</form></body></html>
--------------
をブラウザで表示させ、inputボックスに英数字(または日本語)を入力し、「送信」をクリックすると、今度はCGIスクリプト中の日本語を含めて総ての日本語出力が文字化けしてしまいます。
これが起きるのは、htmlとCGIの文字コードが異なるからでしょうか?
文字化けを止めるには何をすればよいのでしょうか? 教えて下さい。お願いいたします。
お礼
ありがとうございました。そういう事なんですか。 助かりました。 とりあえずwrap="hard"で強制改行してみます。