[MODx]RSS出力の不調
MODxでのRSS出力が上手くいかなくてずっと悩んでいたのです。
今も頭痛いけどォ。
RSS出力はDittoを使って出しているのですが概要の部分で([+summary+])文字化けが起こるのですヨ。
エンコ問題なのか、それともDitto自体の2バイト文字処理に何か問題があるのかはわかりません。
ググってもDittoで文字化けしたという話はあまり聞かないので、サーバー的な問題もあるのかもしれません。
でも原因がわからないからといって放置するわけにはいかないんですよねぇ。
文字化けのせいでRSSが上手くいかないのは困る!とっても!
でDittoはPHxによるデモファイが可能なので、もしかしたら……とrss.format.inc.phpを直接いじって、[+summary+]部分を[+summary:htmlent+]に変更。「&」などをエンティティに変換するデモファイです。
これでなんとか文字化けは回避。
実際は文字化け起こしてる部分を表示可能なエンティティにしてるだけで、文字化けを起こしてることには変わりないんですが……(;´д⊂)
2バイト問題って、もぅずううううううううううっとついて回りますね。
世界標準にしてほしいわ、日本語を。
summaryを取得する部分を解析すればわかると思うので、落ち着いたら取りかかろうと思います。
英語圏のコード解析は気合い入れないとやる気が出ないので(´Д`;)
こんにちは。
私も同じ問題で悩んでいたのですが、解決策がわかりましたのでご参考までにお知らせします。
assets/snippets/ditto/extenders/summary.extender.inc.php
をいじって、
substr(
で始まるところを全て
mb_substr(
に変更すればOKです(もちろん、mbstringが使えることが前提です)。
ページに「要約」がある場合はそちらをそのまま使うので問題ないようなのですが、要約が無いページはRSSのフィードを作るために200文字で本文を切って表示しているようなのです。このときにちょうど半角200文字目が全角文字だと、文字化けを起こしてしまうようです。
>ryo さん
貴重な情報をありがとうございます。
MODxは情報が少ないので、助かります。
やはり2バイト文字の処理問題ですか。
シングルバイト環境の方が、マルチバイトを意識してスニペットやプラグインを作成されるようになるには時間がかかるのかもしれませんね。