IEがエンコードを誤 認識する

IEがエンコードを誤 認識する

- Takahiro Kagoya の投稿
返信数: 3

トピックを分けさせて頂きました。

クライアント(IE6)から自前のMoodleサイトにアクセスしたとき、最初にページが表示される際、(全体が)文字化けすることがあります。(条件を特定できていません。マシンによってなったりならなかったり)

エンコードが西ヨーロッパ(Windows)と判断されているようです。手動で、ページの更新(F5キー)やメニューからエンコードを日本語(自動選択)に設定しなおすと、EUCと認識され問題なく表示されるのですが。

化ける場合の例:URLを直接タイプしてサイトへ移動した場合。
化けない場合の例:別のページに入れたリンクにより、Moodleサイトを訪れる時。この別のページはSJISのファイルでも問題ありません。またお気に入りに登録しておいて、それを選択した場合は場合も問題ありません。。

MoodleはIIS 上で運用しており、localeは空欄にしたり、japaneseやjapanese.eucにしたりしてみましたが、変りません。
IEは6.0.2800.1106 というバージョンでWin2kやWinXPともになる場合があります。(IEの仕様とか設定も関係しているのかも)

同様の症状がある方いらっしましたらお知らせ下さい。

Takahiro Kagoya への返信

Re: IEがエンコードを誤 認識する

- Ryoichi Nakayama の投稿
Windows+IISでは使っていませんが、Linux+Apacheでも文字化けしていました。
ページのメタタグの検出より前に、HTTPヘッダがSJISだよ、といっていたような気がします。
私のところではPHPに次のような設定(実際はapacheから)をしています。
試行錯誤で設定したのでどのパラメータが効いているのかわかりませんが。

php_flag magic_quotes_gpc on
php_flag magic_quotes_runtime off
php_flag file_uploads on
php_flag session.auto_start off
php_flag session.bug_compat_warn off
php_flag output_buffering on
php_value output_handler mb_output_handler
php_value default_charset EUC-JP
php_value mbstring.internal_encoding EUC-JP
php_value mbstring.language Japanese
php_value mbstring.http_input auto
php_flag mbstring.encoding_translation on
php_value mbstring.http_output EUC-JP
php_value mbstring.substitute_character none
php_value upload_max_filesize 10000000
php_value post_max_size 10000000
Ryoichi Nakayama への返信

Re: IEがエンコードを誤 認識する

- Joji Kariya の投稿
BSD+apacheでもmbstringの設定をしないとIEでは化けますね。
教えてもらって良かった。
http_output をEUC-JPにすると、この設定だけで文字化けはなくなりました。
Ryoichi Nakayama への返信

Re: IEがエンコードを誤 認識する

- Takahiro Kagoya の投稿

mbstring 関係ばっかり目がいっていて、
default_charsetを見落としていました。これをEUC-JPにしてみたところ、これまで化けていたものが化けなくなりました。まだ1台でしか確認しただけですが。

取り急ぎご報告まで。ありがとうございました。