CGIが文字化けを起こします。

[統計] HTMLからXHTMLへの移行を進めていますか?



0   名前: アオロン : 2004/05/29 18:19   [URL
CGIを文字コードのEUCで作ると文字化けします。
ブラウザの文字コードを変えると
表示されますが、1回で文字化けせずに
表示させる方法はあるのでしょうか。
頭のいい皆さん是非教えて下さい。

1   名前: phpinfo() : 2004/05/29 20:32   [URL
他のコードでやるとか。

2   名前: Sinryow : 2004/05/30 23:35   [URL
↑phpinfo()さん,そういう回答はやめましょう。

--------------------------------------------------------

私が考え付いたのは

1)<meta>タグで文字コードを指定していないか,間違った文字コードを指定している。
http://www.tagindex.com/html_tag/page/meta_01.html に文字コードの設定法が書かれているので,文字コードを"euc-jp"と明記しましょう。

2)CGIファイルごとに別な文字コードが指定されている。
これはPerlの require 文で別ファイルのプログラムを使う場合にやるミスです。すべて同じ文字コードにしましょう。

アオロンさんの状況からすれば多分(1)だと思いますが,もし(1)(2)両方確認して解決できなかったらまた質問して下さい。

3   名前: phpinfo() : 2004/05/31 07:16   [URL
すいません、急いでいたので手を抜いてしまいました。

4   名前: アオロン : 2004/06/09 16:36   [URL
CGIだとどこにどうやって
メタタグを挿入すればいいか分かりませんが。

5   名前: Sinryow : 2004/06/09 22:40   [URL
CGI(Perlの場合)では,スクリプトの実行が終了するまでにprint文で出力される文書が以下のようになっています。
※例外あり

1行目 Content-type:text/html
2行目 空
3行目以降 HTMLのソース

例えば,以下のようなスクリプトがあったとします。
↓---------------------------------------------------------------↓
#!/usr/local/bin/perl

print "content-type:text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>CGIの実験</title>\n";
print "</head>\n";
print "<body>\n";

for($i=1;$i<=10;$i++){
print "$i<br>\n";
}

print "</body>\n";
print "</html>\n";
↑---------------------------------------------------------------↑

これに<meta>タグを入れるなら,

↓---------------------------------------------------------------↓
#!/usr/local/bin/perl

print "content-type:text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<meta http-equiv=\"content-type\" content=\"text/html;charset=euc-jp\">\n";
#↑これが追加した行
print "<title>CGIの実験</title>\n";
print "</head>\n";
print "<body>\n";

for($i=1;$i<=10;$i++){
print "$i<br>\n";
}

print "</body>\n";
print "</html>\n";
↑---------------------------------------------------------------↑

となります。

6   名前: sail : 2004/06/11 01:45
せっかくcontent-typeを自分で指定できるのですから、
3行目を
print "content-type:text/html\;charset=euc-jp\n\n";
として、meta要素では指定しなくても良いでしょう。

7   名前: ばあど : 2004/06/11 09:55   [URL
いやいや、某ブラウザがHTTPヘッダ認識しないから、
両方ともあった方が良いよ。

一覧へ戻る