ブラウザで表示したときの文字化けについての質問です。Apache の設定で、AddDefaultCharset をコメントしておいても、通常は文字化けしません。ただ、PHPのLocation で別ページに飛ばしたりするときに文字化けが起こることがあるという話を聞きました。この件に関して、詳しくのっているページあったら教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/08/04 11:14:15
  • 終了:2010/08/11 11:15:03

回答(4件)

id:yuki1123 No.1

卓球オタク回答回数43ベストアンサー獲得回数02010/08/04 11:24:00

id:kaiketsu

すみません。リンク先に飛ばないようです。

2010/08/04 11:30:42
id:tasklight No.2

tasklight回答回数323ベストアンサー獲得回数402010/08/04 11:41:32

ポイント30pt

PHPのLocation で別ページに飛ばしたりするときに文字化けが起こることがあるという話を聞きました

何かの勘違いだと思います。


HTMLソースにきちんとcharsetが記述されていれば、Locationでジャンプしようが何をしようが文字化けは起こりません。→メタタグによる文字コード指定の有効性

id:kaiketsu

apache の設定で、AddDefaultCharset の設定をすると文字化けが起こることはあるようです。IEの古いバージョンの現象のようです。

2010/08/04 12:24:09
id:basasitarou No.3

basasitarou回答回数5ベストアンサー獲得回数02010/08/04 12:12:16

ポイント30pt

こちらがそうではないでしょうか。

http://oshiete.goo.ne.jp/qa/493120.html

Locationで飛ばしていることが問題なのではなくて、

飛ばされた先のページヘッダで文字コードが設定されていないか、飛ばされる元のページとの文字コードが一致しないことが原因です。

id:yuki1123 No.4

卓球オタク回答回数43ベストアンサー獲得回数02010/08/04 13:06:53

Googleで「文字化けが起こること」と検索して一番上をクリックすればかいてあります

http://.hatena.ne.jp

  • id:kaiketsu
    リダイレクトというか遷移後にばけることはあるようです。そんなことあるはずないという回答は不要ですのでよろしくお願いします。古いブラウザで、一度、文字コードの指定がないと、次で化けるようです。
  • id:rouge_2008
    PHPのLocationで飛ばしたかどうかではなく、「AddDefaultCharset」で指定した文字コードと飛んだ先のファイルの文字コードが合っていない為に文字化けしているのだと思います。


    以下はIETesterで簡単にテストしてみた結果です。
    ※Locationで遷移せず、直接表示した場合も同じです。

    AddDefaultCharset指定なし

    UTF-8→Shift_JIS 正常に表示
    UTF-8→EUC IE5~7で文字化け(※数回目には正常に表示)
    UTF-8→UTF-8 すべてのバージョンで真っ白

    EUC→SJIS 正常に表示
    EUC→EUC IE5~7で文字化け(※数回目には正常に表示)
    EUC→UTF-8 すべてのバージョンで真っ白

    SJIS→SJIS 正常に表示
    SJIS→EUC IE5~7で文字化け(※数回目には正常に表示)
    SJIS→UTF-8 すべてのバージョンで真っ白


    AddDefaultCharset utf-8

    UTF-8→Shift_JIS すべてのバージョンで文字化け
    UTF-8→EUC すべてのバージョンで文字化け
    UTF-8→UTF-8 正常に表示

    EUC→SJIS すべてのバージョンで文字化け
    EUC→EUC すべてのバージョンで文字化け
    EUC→UTF-8 正常に表示

    SJIS→SJIS すべてのバージョンで文字化け
    SJIS→EUC すべてのバージョンで文字化け
    SJIS→UTF-8 正常に表示


    AddDefaultCharset euc-jp

    UTF-8→Shift_JIS すべてのバージョンで文字化け
    UTF-8→EUC 正常に表示
    UTF-8→UTF-8 IE5~7で真っ白、IE8で文字化け

    EUC→SJIS すべてのバージョンで文字化け
    EUC→EUC 正常に表示
    EUC→UTF-8 IE5~7で真っ白、IE8で文字化け

    SJIS→SJIS すべてのバージョンで文字化け
    SJIS→EUC 正常に表示
    SJIS→UTF-8 IE5~7で真っ白、IE8で文字化け


    一部(AddDefaultCharset指定なしで)挙動が変わったものがありましたが、それ以外はAddDefaultCharsetで指定した文字コードとファイルの文字コードが同じ場合にだけ正常に表示されました。

    ※「AddDefaultCharset」が指定されている時、「<meta http-equiv='Content-Type' content='text/html; charset=~'>」による指定は無視されました。
    ※優先順は、「header("Content-type: text/html; charset=~");」>「AddDefaultCharset」>「<meta http-equiv='Content-Type' content='text/html; charset=~'>」でした。


    http://httpd.apache.org/docs/2.2/ja/mod/core.html#adddefaultcharset
    -----------------------------------------------------
    レスポンス (訳注: レスポンスの HTML) 内で META 要素で指定された、どのような文字セットも無効にしますが、 最終的な挙動はユーザのクライアント側の設定で決まります。
    -----------------------------------------------------
    Apacheのドキュメントでも上記のように記載されています。

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

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

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

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