ファイルマネージャでのテキストファイル表示

2011年1月9日 at 1:41

バグ情報として書くべきか、日本語版開発のところに書くべきか迷ったのですが…

管理画面の「ファイルマネージャ」からテキストファイルを表示する場合、そのファイルの文字コードがUTF-8でないと正しく表示できません。内容が一切表示されない場合もあります。
concrete/elements/files/view/text.php の中で、file_get_contents() の戻り値をそのまま Loader('text')->entities() に渡しているのが問題で、このファイルの6行目を例えば

print Loader::helper('text')->entities(mb_convert_encoding(file_get_contents($path), APP_CHARSET, 'EUC-JP,UTF-8,SJIS,JIS'));

とすればOKです(文字コードの誤認識の可能性は別として)。

日本語のみならず、欧米でもウムラウト付きアルファベットが書かれたISO 8859-1のファイルなどは部分的に文字化けしそうです。変換元文字コードは 'auto' に設定したほうが日本語版以外の場合にも対応できていいのかもしれません。あとWindowsのメモ帳などUTF-16で保存できるエディタがあったりするので、レアケースかもしれませんがそれにも対応できたほうがいいかもと思ったり。(いずれにしても文字コード指定の話です)

追記: Ver 5.4.1.1で問題を確認しています。

一応まとめ記事:http://hira.hopto.org/tips/concrete5/filemanager_text.xhtml

Re: ファイルマネージャでのテキストファイル表示

2011年1月9日 at 1:48
いつもありがとうございます。
これは気づきませんでした。

日本語版はどこかでmb_detect_order()で指定しておいた方が良いかもしれませんね。