人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CGIの質問です。
Content-Type: text/html; charset=utf-8;
を出力しているのに、Firefoxにtext/plain扱いされてしまうのですが、原因は何が考えられるでしょうか?
またIEに文字コードをSJISだと勘違いされてしまうのですがこれの原因は何が考えられるでしょうか?

●質問者: westfish
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CGI firefox HTML IE SJIS
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● TomCat
●69ポイント ベストアンサー

これは、Content-Type: text/html; charset=utf-8が

全く効いていないということですよね。

Content-Type: text/html; charset=utf-8の後には、

改行が二つ必要になります。

つまり、たとえばperlで書くなら、

print "Content-type: text/html; charset=utf-8\n\n";

ということになります。utf-8の直後に改行2つです。

まずはそのへんをチェックしてみてください。

◎質問者からの返答

改行は二つありますし、改行コードもUNIXの物ですし…といじっていたらうまく行きました。

このCGIはテンプレートをファイルから読み込んでコンテンツを埋め込んで出力する物だったのですが、そのテンプレートファイルをUTF-8で保存する際にBOMを取り除いていなかったためContent-typeの前に余計な文字がついてうまく認識されなくなったことが原因だったようです。


2 ● yotaro
●1ポイント

HTTPヘッダで文字コードを指定するようにすれば、コードの問題は解決すると思います。text/plainについてはサーバーが対応していないと厳しいかもしれません。

「Content-Typeエンティティヘッダフィールドは適切なものを指定してください」

http://www.mozilla.gr.jp/standards/webtips/webtips0033.html

通常、Apache等のWebサーバアプリケーションは*.htmlや*.htmであればtext/htmlを付けるように初めから設定されています。

問題なのは*.shtmlのように普段使用しない拡張子のファイルです。 このようなファイルはtext/plainとして扱われる可能性があります

また、CGIのように自前でHTTPレスポンスヘッダを生成する場合です。 この場合にも内容にあった適切なヘッダを生成するように注意しなくてはいけません。

「メタタグによる文字コード指定の有効性」

http://www.shtml.jp/mojibake/meta.html

メタタグによる文字コードの指定はできるだけ上の方でやった方がよい訳です。もっと言うならHTMLファイルの中で記述しているのでは遅すぎるとも言えます。純然たるHTMLファイルの場合は、どうしようもありませんが、もしperlやPHPを利用されているのならば、是非、自力で文字コードをHTTP ヘッダーで指定するべきです。

◎質問者からの返答

>HTTPヘッダで文字コードを指定するようにすれば、コードの問題は解決すると思います。

質問の意図をご理解いただけなかったようで残念です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ