IE11でダウンロード時に文字化けするという報告がありました。

IE11でのファイルが文字化けするという報告は、検索すればいっぱい出てきて、

IEのブラウザ側で互換表示をしてやると治るという解決方法を進めているサイトがたくさんあります。

しかし、今回は、「互換表示をするという方法を使わずにサイト側でなんとかできないか」というご依頼でした。

 

簡単に「METAタグに互換を仕込めばいっかー」と安請け合いしたのですが、そうはいかなかったです。

レイアウトが崩れる時などにIEの互換表示をサイト側(メタタグ)で制御する方法

そもそも、その環境はXOOPSのfckeditorを使ってファイルリンクを作っていて、transfer.phpを介してファイルダウンロードさせています。

そこでの文字コードの問題かな。だけど、IE11の互換モードを使ってたら、文字化けは解消されるし……

といろいろと調べておりましたが、

IE11でファイルをダウンロードすると文字化けが発生する

が近いのだと思います。

 

前に、XOOPSのSPAWエディターがらみでいろいろ調べていたときに(参照:SPAWエディターが表示しなくなったら)、そんな話があったなぁ。

/common/fckeditor/editor/filemanager/connectors/php/transfer.php を見ます。

L26あたりに

[php]

if( substr( $GLOBALS[‘xoopsConfig’][‘language’] , 0 , 2 ) == ‘ja’ && strstr( $ua , ‘MSIE’ ) && ! strstr( $ua , ‘Opera’ ) ) {

[/php]

とあります。これを

[php]

if( substr( $GLOBALS[‘xoopsConfig’][‘language’] , 0 , 2 ) == ‘ja’ && (strstr( $ua , ‘MSIE’ ) || strstr( $ua , ‘Trident’ )) && ! strstr( $ua , ‘Opera’ ) ) {

[/php]

に変更します。

これでうまく行きます。