http://hp.vector.co.jp/authors/VA014833/CGI/header.html
CGI $B%W%m%0%i%`$N2~NI0F(J/$B%X%C%@$N=q$-J}(J
HTMLのヘッダではなく、HTTPのヘッダで文字コードを指定していないからだと思われます。
実はたった今自力で問題が解決しました(CGI.pmからprint $q->header;としてヘッダを出力していたのを、普通にprint ”Content-type: text/html¥n¥n”;としたら解決)。これは何故でしょうかね。HTTPヘッダでの文字コード指定も勉強になりましたので、ポイント付けたいと思います。以後、解決済みのためポイントは低くなりますが、参考のため参照させて頂きます。ご了承下さい。
人力検索はてな
URLはダミーで失礼します。
もしかすると、CGIのソースコードが
EUCで保存されていないのかもしれません。
ローカルではEUCでも、サーバに転送される時に
他の文字コードになってしまう場合もあります。
お使いのFTPクライアントの転送設定なども確認してみてください。
また、サーバによっては、出力させるに当たって特に
print ”Content-type: text/html; charset=EUC-JP¥n¥n”;
などとcharsetまで含めて指定しておかないと、
意図した日本語文字コードに対応してくれない場合があります。
とりあえず、CGIが出力したページのソースを取って、
どこに問題点があるかを検討してみてください。
それが一番の早道です。
ありがとうございます。
JAPAN APACHE USERS GROUP
apache の httpd.conf の
AddDefaultCharset ISO-8859-1
を↓にするとか
AddDefaultCharset Off
あと CGI からキャラクタセットを指定するなら HTML ではなく
content-type: text/html; charset=EUC-JP
のようにするのが本筋ではないでしょうか。
ありがとうございます。
print ”Content-type: text/html;charset=Shift_JIS¥n¥n”;
は出してますでしょうか。
ありがとうございます。
Apacheの設定でAddDefaultCharsetにUTF-8を指定していませんか?
URLを参考にしてみてください。
ありがとうございます。
e-city.tv
アップロードでEUCモードにしてアップロードしていますか?
質問文のタグがコピー&ペーストだとすると、「”」の文字が全角になっているのが気になります(はてなが変換しているのかな?)。
ありがとうございます。これははてなが変換しているようです。
meta 以外に、
httpヘッダに埋め込みましたか?
私のcgiで恐縮ですが、これの3行目のようなことをして埋め込みます。
#!/usr/local/bin/perl
use strict;
print ”Content-type: text/html; charset=euc-jp¥n¥n”;
require ”header.pl”;
&htmlstart();
&header(”title”,
”./style.css”,
”./CommonJavascript.js”,
”no-cache”
);
&contentsstart();
もしくは、サーバがわで設定すればどうでしょう。
もしもサーバにApacheを使っていおらっしゃるならば、Apacheの httpd.confファイルの中に、次の一行を付け加えましょう。
AddType ”text/html; charset=EUC-JP” .html
ソースを見るとよく分かりますね。ありがとうございました。
HTTPヘッダで、EUCを使うことを明言してみるといいかもしれません。ブラウザによってはmetaタグの情報を認識しないようです。
Content-Type: text/html; charset=euc-jp
ありがとうございます。
http://httpd.apache.org/docs-2.1/ja/mod/mod_mime.html#addcharset
mod_mime - Apache HTTP サーバ
質問ではサーバ環境が判りませんが、Apacheであれば、.htaccessファイルを置いて、AddCharset ディレクティブで明に指定するといいかと思います。
ありがとうございました。こういった場合、文字コードをWWWサーバの設定ファイルで明示する方法と、HTTPヘッダで明示する方法があるようですね。それと、今後この質問を参照した人のために「CGI.pm」からのヘッダ出力かもよ。と書いて質問を終了したいと思います。回答ありがとうございました。
一応としても文字化けするようです。