以下の処理を行うときになぜかIEでのみ文字化けする現象にぶち当たった。
A.phpにイベントを仕掛けて
↓
jQueryのAjaxメソッド発動
↓
B.phpにAJAXリクエストをなげて
↓
B.phpでHTMLテキストを生成して
↓
A.phpのAjaxメソッドに戻して
↓
A.php内のボックスに$(~).html(~)でHTMLテキストを描画
↓
なぜかIEでのみ文字化け!! (´;ω;`)
↓
jQueryのAjaxメソッド発動
↓
B.phpにAJAXリクエストをなげて
↓
B.phpでHTMLテキストを生成して
↓
A.phpのAjaxメソッドに戻して
↓
A.php内のボックスに$(~).html(~)でHTMLテキストを描画
↓
なぜかIEでのみ文字化け!! (´;ω;`)
なぜかIEの「ページ→エンコード→自動選択」をONにすると文字化けがおこらない。
ChromeやFirefoxでは文字化けは一切おこらない。
さらに、自分のテスト環境ではおこらず、本番環境でのみ発生する。
おそらく、ApacheかPHPの設定が異なるために起こっているのだと思う。
(詳細はしらべてないのでシラネ)
ってことで早速Google先生をシバキ倒してみたら、↓に答えのヒントを書いてくれているエロいひとを発見。
感謝感謝。
IEだけjQueryでgetJSONが動かない→UTF-8、外部ドメインかなど4点を確認 | KennyQi PHP Blog
http://kennyqi.com/archives/221.html
http://kennyqi.com/archives/221.html
ズバリ以下のコードをHTMLテキストを吐く直前に書いてやればいい。
header(“Content-type: text/html; charset=UTF-8”);
前述のヒトはJSONデータでお困りだったようだけど、今回は「text/html」なので、そこらへんを修正ってことね。
以上、めでたし、めでたし。