表示されるHTMLには、
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
と指定しており、
.htaccessには、
AddDefaultCharset shift-jis
AddType "text/html ; charset=shift_jis" .html
と指定してあります。
.htaccessはドキュメントルートに配置しています。
環境
apache 1.3
perl 5.6
起動時のファイル名は、index.cgiです。
IEからエンコードでShift-JISを選択すれば
正しく表示されます。
ほかに何が必要でしょうか。
ちなみに、HTMLの背景色を青で指定しているのに、
ピンクで表示されるのはなぜでしょう。
HTTPヘッダーのcharsetが
Content-Type: text/html; charset=windows-1251
になってますね。
でも、
Server: nginx/0.5.7
ってなってますよ。
ちょっと調べた限りではnginxってApache互換じゃなさそうですが…。
ヘッダーの出力の際に文字コードを指定してやればいいと思います。
print "Content-type: text/html; charset=SHIFT_JIS\n\n";
> ちなみに、HTMLの背景色を青で指定しているのに、
> ピンクで表示されるのはなぜでしょう。
これは単純に指定が間違っているのでは?
コードをコピペしてもらえればわかるかもしれません。
回答ありがとうございます。
>ヘッダーの出力の際に文字コードを
>指定してやればいいと思います。
>print "Content-type: text/html; charset=SHIFT_JIS\n\n";
すみません。記述がもれてました。
これもやってます。
>これは単純に指定が間違っているのでは?
>コードをコピペしてもらえればわかるかもしれません。
コードを見直したところ僕のミスでした(^^;
AddDefaultCharset shift-jis
こんな感じで、ヘッダーかmetaタグで"shift_jis"を"shift-jis"と書き間違えているのでは?
ありがとうございます。
これも直しましたが状況かわらずです。
レンタルサーバーがロシアにあるので、表示されるのはかならずWindows-1251のコードに変換されてしまいます。
htmlの記述の問題での自分の過去の失敗例として,ヘッダーで
エンコードを指定するmetaタグの前にtitleタグをおいてしまった、
というのがあり、同じように文字のエンコード動作がうまくいかなかったことがあります。
ブラウザがmetaタグのエンコード指定を読み込む前に、titleタグの日本語文字列で自動判定してしまい、これが誤っていたということの結果でした。
表示されるのはかならずWindows-1251のコードに変換されてしまいます。
何が変換されるのですか?
HTTPヘッダ?CGIの出力内容?
AddDefaultCharsetディレクティブは、
HTTPヘッダにコンテントタイプパラメータを持たないレスポンスに追加される文字セットの名前を指定
するものなので、HTTPヘッダで
Content-Type: text/html; charset=Shift_JIS
と指定すれば、こちらが有効になるはずですが。
状況がよくわからないので簡単なテストCGI(ソースとそれをサーバーに置いたもの)を公開してみてはいかがでしょうか?
CGIではなく、HTMLでも文字化けするのでHTMLを公開させていただきます。
http://www.lovefunk.net/index.html
このHTMLの文字コードはShiftJISで記述してます。
また、.htaccessは以下のように記述してます。
AddDefaultCharset Shift_JIS
AddType "text/html ; charset=shift_jis" .html .htm .cgi
AddCharset Shift_JIS .html .cgi
HTTPヘッダーのcharsetが
Content-Type: text/html; charset=windows-1251
になってますね。
でも、
Server: nginx/0.5.7
ってなってますよ。
ちょっと調べた限りではnginxってApache互換じゃなさそうですが…。
サーバー自体はFreeBSDなのですが、
リバースプロキシがnginxかもしれないです。
関係があるのかどうかわからないのですが。。。
こういう場合の対処方法ってないのでしょうか。
サーバー自体はFreeBSDなのですが、
リバースプロキシがnginxかもしれないです。
関係があるのかどうかわからないのですが。。。
こういう場合の対処方法ってないのでしょうか。