- 締切済み
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の文字コードが異なるからでしょうか? 文字化けを止めるには何をすればよいのでしょうか? 教えて下さい。お願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- localica
- ベストアンサー率52% (202/385)
>これが起きるのは、htmlとCGIの文字コードが異なるからでしょうか? その通りです。 >文字化けを止めるには何をすればよいのでしょうか? 一例ですが以下の方法で如何でしょう。 ■修正前 <input type="text" name="text"><br> ↓ ■修正後 <input type="text"" name="text" value="UTF-8><br>
お礼
早速、回答をお寄せ下さいまして、大変助かりました。誠にありがとうございました。