[MODx]RSS出力の不調 その後

最近MODxのRSSの文字化けでこのサイトにたどり着く方が多いようです。
幸いなことに、バリに行っている間に(cf.[MODx]RSS出力の不調)にコメントがついて、その解決方法がわかりました。
コメントをくださったryo様には感謝いたします。



それでもうちょっと具体的にその方法を記録しておきたいと思います。

まず、assets/snippets/ditto/extenders/summary.extender.inc.php をエディタで開き、substr関数をすべてmb_substr関数に置き換えます。全部で7カ所あると思います。

そして最初の

<?php

の下に

mb_internal_encoding($modx->config[’etomite_charset’]);

を付け加えます。

セーブして元のsummary.extender.inc.php と入れ替えればOK。
もちろん念のためにオリジナルのsummary.extender.inc.php は保存しておいたほうがいいでしょう。

今の日本のサーバーなら大抵mbstringは使えるはずですが、確認したいならばMODxの管理画面から[レポート]を選び、さらに[システム情報]の中の「phpInfo() ここをクリック」をクリックして、mbstringがenabledになっていれば使えます。

文字エンコードはmb_substr関数の引数で直接指定もできますが、7カ所手を入れるのは面倒なので、ファイルの先頭でセットしました。

もしかしたら他にもっとスマートな方法があるのかもしれませんが、とりあえず私の環境では文字エンコードをセットしないと文字化けは直らなかったので、この方法に。
本当はmb_language(”Japanese”);も入れたほうがいいのでしょうが、manager_languageを加工するのが面倒くさk

Comment »

  1. さとぼう2008.04.01 00:42

    どうもはじめまして。詳しい解説どうもありがとうございます。

    3日間以上も悩んでいたことが、この記事を書いてくださったおかげで解決しました!!

    phpは全然分からないので、とても助かりました。

    本当にありがとうございます(^^)

  2. >さとぼう さん

    お役に立てて何よりです。
    元々私も教えていただいたクチですが。

コメントする