CGIの質問です。

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

回答の条件
  • 1人2回まで
  • 登録:2006/07/02 23:31:46
  • 終了:2006/07/03 00:27:39

ベストアンサー

id:TomCat No.1

TomCat回答回数5402ベストアンサー獲得回数2152006/07/02 23:50:28

ポイント69pt

これは、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つです。

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

id:westfish

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

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

2006/07/03 00:26:13

その他の回答(1件)

id:TomCat No.1

TomCat回答回数5402ベストアンサー獲得回数2152006/07/02 23:50:28ここでベストアンサー

ポイント69pt

これは、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つです。

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

id:westfish

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

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

2006/07/03 00:26:13
id:yotaro No.2

yotaro回答回数430ベストアンサー獲得回数322006/07/03 00:02:55

ポイント1pt

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 ヘッダーで指定するべきです。

id:westfish

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

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

2006/07/03 00:26:55
  • id:TomCat
    おおっ。末尾ではなく、先頭の問題だったんですね。
    直接の解決には結びつかず、お役に立たず申し訳ありませんでした。
    でも、解決して良かったです(^-^)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません