Contents

知人に頼まれて News 表示プログラムの修正。
サーバーを変更しただけなのになぜかIEのみ表示されないとのこと。
IE。。。嫌いなんだよね。

現象

非同期でテキストファイルを読み込みWebページに表示させる処理の際、InternetExproler のみ以下のエラーが発生する。

エラー c00ce56e のため操作を完了できませんでした

なんだろぅ?

原因

XMLHttpRequest とレスポンスの文字コードが違う場合にエラーが起きる。
プログラムファイルも読み込むテキストファイルも UTF-8。
しかしテキストファイルはheaderを送信していないため文字コードを判別できないみたい。

ならば教えて上げようじゃないか。

解決方法

以下の方法で文字コードを指定する。

1, 読み込むファイルが PHP の場合

header("Content-Type: text/plain; charset=UTF-8");

2, php.ini で設定する場合

default_charset = "utf-8"

3, .htaccess で php.ini の設定を書き換える場合

php_value default_charset utf-8

これでもダメなら .htaccess に以下を記述。

AddType text/plain;charset=UTF-8 .txt

これでOK。

まとめ

サーバーを変えた際にこの現象が起こったってことは、前サーバーではデフォルトの php.ini で文字コードを指定していたんだと思う。
新サーバーでは no value だったということ。
IE 以外のブラウザはこのあたり柔軟に対応してる。
IE は頑固というか実直というか。
ちょっと好きになれそう。

Comments are closed.