We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 26012
    • 324 Posts
    mixiの方で、以下の問題で困ってる人がいます(代理でトピ立てます)。
    http://mixi.jp/view_bbs.pl?id=43700770&comment_count=31&comm_id=571831

    ヒアリングの結果、エンコード関連の設定ミスではなく、日本版独自の障害と思える条件が出てきました。原因と修正方法が分かるようでしたらご指導下さい。

    ■環境
    PHP : 4.3.9 ※サーバやOSバージョンなどは不明
    modx : evo-j-b2  ※RC版は未確認

    ■現象
    管理画面>ダッシュボード>MODxの最新情報の日本語が完全に文字化けして読めない。
    サマリの最後のマルチバイト文字が化ける現象も確認してますが、この件とは別です。

    ■調査経緯(考察)
    MODxの最新情報は、日本版では日本公式サイトが配信するRSSフィードを表示するようになってます。このフィード情報は、assets/cache/rssフォルダ直下にXML形式ファイルにコンバートしてからダッシュボードに表示するようですが、質問者の環境では、このファイル自体が既に文字化けしてるようです。XAMPP1.7.1(PHP5)環境では再現しないことから、PHP4に限った問題ではないかと考えてます。

    本家版NewsフィードはISO-8859-1(Latin-1)で配信されてますが、日本公式ではUTF-8で配信されてます。これはあくまで予想ですが、PHP5ではエンコード判定が強化されたためエンコードを誤認することはないが、PHP4では、ISO-8859-1(Latin-1)と誤認して処理してるケースを疑ってます。

    なお、現在の日本版では、MODxの最新情報のみ日本公式のフィード(UTF-8)を表示しており、セキュリティ情報は本家のフィード(Latin-1)を
    表示してます。ゆくゆくは、セキュリティ情報も日本公式からの配信を表示するようになると思いますが、双方とも同じ関数で処理されているため、入力側のエンコードをどう扱えば(どう修正すれば)よいか判断しかねてます。

    ★PHPの動作保証バージョンが4.4以上であることは承知してますが、接近したバージョンであるため、4.4以上でも問題になるかどうかを特に気にしてます。
    • 日本語版独自の調整を加えたのはrss.inc.phpで、mb_convert_encoding関数を利用してます。ここはそれなりに全うな処理だと思います。なんとなく、phpのバージョンというよりライブラリ依存な問題がありそうな気がします。本家もちゃんと理解して採用してる感じではなさそうだし。
      こちらで再現できるといいですが、もし再現できなければ該当のキャッシュファイルを見て文字化けのクセを見れば何かヒントを得られるかもですね。
        • 26012
        • 324 Posts
        yamaさんレスありがとうございます。

        manager\media\rss\rss_fetch.inc が怪しいと思って調べてるのですが、いかんせんPHPのバージョンが古く、再現環境の構築が困難なため論理的に追跡してますが、エンコード関連は仕様も、バージョンごとの挙動も微妙なようで難儀してます。質問者の方には保証バージョンを下回ってることはお伝えしてありますが、4.4以上でも再現するなら要修正と思いまして・・・

        どなたか古い環境をお持ちの方おられませんかー?
        • VDの古いサーバを一週間無料で借りて検証、とかのほうが簡単かも。問題を切り分けやすくするためにMAGPIE_CACHE_ONはfalseにしてキャッシュ制御抜きで見るとよいかなと思います。僕がチェックできればいいけど、ちょっと手いっぱいかも。とりあえず何か気付くたびにヒントだけ投げときますね、すいません。

          追記
          MAGPIE_CACHE_ONは定数なのでjapanese-utf8.inc.phpで定義しちゃうとラクだと思います。今も先頭のほうにMAGPIE関連の定義が入ってるはずなので、それに倣って書くとよいと思います。
            • 26012
            • 324 Posts
            XREAのサーバ群のPHPのバージョンを調べたところ4.3系は皆無でした。ネット上の関連記事を見ても、4.3から4.4へのリビジョンアップでは相当な変更が加えられてるようで、「接近したバージョンだがまるで違うもの」みたいです。4.4では再現しないこと濃厚?(気合が抜けました・・・)
            • い。4.3ですか。それはいろんな意味でやめといたほうがいいかも。個人的にはもう過去のものだと思ってますが・・