リモートRSS ブロック

リモートRSS ブロック

- Takahiro Kagoya の投稿
返信数: 12

1.5devを試しているところですが、RSSブロックがうまく動作しません。試された方・利用されている方はいらっしゃいますか?こちらでは、ブロックの追加で、フィードの追加を選び、RDFのURLを指定するのですが、タイトル、および記事一覧が文字化けします。

UTF-8のせいかと思っているのですが...ということは、現状のEUCのページでは、RSSの利用が難しいということでしょうか。

Takahiro Kagoya への返信

Re: リモートRSS ブロック

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
日本語のように文字コードが複数存在する言語特有の現象だと思います。

Moodleサイトを取得先の文字コードに合わせると文字化けはしませんが、逆にMoodleサイトの投稿内容等が文字化けします。

RSSブロックに表示する直前に文字コードを判断して、Moodleサイトで使用されている文字コード ( EUC-JP、UTF-8 ) に変換するロジックを組み込むことにより文字化けを回避することが可能だと思います。

どなたかご協力をお願い致します。 笑顔
Mitsuhiro Yoshida への返信

Re: リモートRSS ブロック

- Takahiro Kagoya の投稿

以前、こちらのスレッドで話題にあがったことと関係するのかと思うのですが...まだよく理解できていません。
http://moodle.org/mod/forum/discuss.php?d=11914

Moodleをja_utf8で運用されている方は、このRSSブロックも問題なく表示されているのでしょうか。 1.5へのアップグレードを機にUTF-8への移行も考えたいのですが、どのような移行手順が必要でしょうか。

http://www.learning-square.jp/
こちらでは、すでにUTF-8で運用されているようですが、問題等はありませんでしょうか...

質問ばかりで申し訳ございませんが、アドバイスをいただけたら幸いです。

Takahiro Kagoya への返信

Re: リモートRSS ブロック

- Ryoichi MURASHIMA の投稿
村嶋@くまもとインターネット市民塾です。
http://www.learning-sqare.jp/では、昨年の10月にutf-8への移行を行ないました。移行手順としては、moodleのDBのデータをいったんdumpして、euc-jpからutf-8への文字コード変換を行ない(一部はエディタを使い手作業で修正)、restoreしました。
運用後は、以下のような対応を行ないました。
・自動通知メールの文字欠け対策
[発生事象]
moodleのフォーラムに投稿された記事をメールで配信した場合、受信したメールの一部の文字(「だ」や「報」など)が、欠落する。
[原因]
HTMLフォーマットで投稿された記事をテキスト形式に変換する機能で、マルチバイト対応が考慮されていないため、タグ等の除去を行う処理で、文字コード中の特定ビット列を誤って除去しているため
[対応]
該当コード(html2text.php)のコードを修正して対応しました

・自動通知メールのJIS化
moodlelib.phpにmb_関数群を10数行書き加え、テキストメールのみJISに変換するようにしました。

・「最近の活動」の文字化け
/moodle/lib/weblib.phpの修正

・その他
グラフのフォントについては、ディストリビューション(Fedora Core 2)内蔵のTrueTypeフォントをlinkし、graphlib.phpでフォントの大きさ調整を行いました。

以上、長くなるので詳細は割愛しますが、他にもいろいろあって、結構苦労した記憶があります。参考になれば幸いです。

 
Ryoichi MURASHIMA への返信

Re: リモートRSS ブロック

- Takahiro Kagoya の投稿

お返事ありがとうございます。

dump後変換してrestoreくらいまでなら私もできそうですね。
その他の修正の部分がちょっと、大変そうす。

くまもとインターネット市民塾様では、1.4.*で運用されていて、RSSリモートブロックや、サイトのRSSフィードの利用は、されていませんよね? もしされているならその結果も参考にさせて頂きたいと思うのですが。

もしされているなら、以下の2点についてご教授ください。

  1. RSSリモートブロックで、他のサイトのフィードを指定して文字化け等ないか
  2. RSSフィードを設定していて、moodleのフォーラムを、FireFoxやRSSリーダで問題なく読めるかどうか
Takahiro Kagoya への返信

Bloglinesでの文字化け

- Takahiro Kagoya の投稿

もと記事とは、直接関係ありませんが、先日RSSリーダとして、Bloglines ( http://www.bloglines.com )が非常に便利な気がして、使ってみました。

一般的な日本語Blogサイトは問題なく表示されるのですが、こちらのJapanese MoodleサイトRSSフィードを指定すると、文字化けします。utf-8へのエンコードがうまくいっていない気がしています。

これが使えると、これまでのWebブラウザ上だけでなく、携帯電話等からのフォーラムの閲覧ができそうなので、非常に期待しています。

まだこのRSSがらみの実装について確認していませんが、詳しい方で対策等お分かりの方がいらっしゃたらご教授ください。

Takahiro Kagoya への返信

Re: リモートRSS ブロック

- Hiroto Kagotani の投稿
かなり昔の話題ですが RSS がらみを最近いじってみたところ、かなりいい結果が出たので、概要をご報告しておきます。私の環境は ja_utf8 ですが、ja でも問題ないと思っています。

RSS送受信に共通
  • lib/setup.php の最後 (私は charset.php というファイルをincludeすることにしましたが、langlib.php でももちろん可)で、UTF-8 から get_string('thischarset') に変換する関数と、逆の関数を用意(mb_convert_encodingを使えばよい)。
  • $utf8_decode と $utf8_encode に、それぞれこの関数名を入れておく。
RSS送信
  • lib/rsslib.php の utf8_encode の部分で、global $utf8_encode; とした上で、$utf8_encode を使うように修正。
RSS受信
  • lib/rsslib.php の rss_unhtmlentities で、HTML_ENTITIES のかわりに HTML_SPECHALCHARS を指定。
  • block/rss_client/block_rss_client.php の get_rss_by_id を次のように修正:
    • rss_fetch.incを読む前に MAGPIE_OUTPUT_ENCODING を 'UTF-8' と定義。
    • global $utf8_decode しておく。
    • $rss->channel['title'], $item['title'], $item['description'] を rss_unhtmlentities に渡すところで、その前に $utf8_decode をかませる。
    • $rss->image['title'] を使う部分にも $utf8_decode をかける。
少し使ってみただけで完全なテストではないですが、asahi.comやslashdot.jpの受信はできています。また、ローカルな日本語フォーラムのRSSフィードをThunderbirdやFirefoxで受信できています。

これらをbug trackerに報告するのは簡単なのですが、今は1.5に向けて機能面でのバグを潰すのにせいいっぱいでしょうから、1.5が出るまで正式な報告は控えておこうと思います。

langlibのような大きなファイルをいきなり入れろというのも、相手の立場に立てば訳のわからないコードを大量に入れさせられるのは望まないのではないかと思います。1.5が出た後の話になりますが、まずは、utf8_encode と utf8_decode の再定義を langpack の作者でできるようにさせてくれという戦術はどうでしょうか?

Hiroto Kagotani への返信

Re: リモートRSS ブロック

- Makoto Maeda の投稿

ついこの前まで文字化けしていましたが、昨日入手したMoodle 1.5 ALPHA (2005050600)にて再確認したところ正常に表示されました。

ただし、UTF-8のみでEUCでは文字化けします。


下記のURLで確認しました。

 @IT
http://www.atmarkit.co.jp/rss/rss.xml
ITエンジニア対象の技術解説情報&コミュニティサイト

 asahi.com
http://www3.asahi.com/rss/index.rdf
アサヒ・コム

Makoto Maeda への返信

Re: リモートRSS ブロック

- Hiroto Kagotani の投稿
なるほど。MAGPIE_OUTPUT_ENCODINGに関する修正が最近入ったんですね。bug 3107に対応した修正のようです。

Magpieの(というよりXMLパッケージの)仕様により、この修正だけでは UTF-8 と ISO-8859-1 しか対応しないので、EUC環境でmbstringを導入されている方には、可能なら上の修正を試していただけると幸いです。
Hiroto Kagotani への返信

Re: リモートRSS ブロック

- Hiroto Kagotani の投稿
> 1.5が出るまで正式な報告は控えておこうと思います。

と思っていましたが、検索したらほとんど同じことをbug 2748で書いてる人がいたので、便乗してきてしまいました。
Hiroto Kagotani への返信

Re: リモートRSS ブロック

- Takahiro Kagoya の投稿

大変心強く、感謝しております。

 当方、未だにEUC 1.4.4で運用中です。多くの授業で利用されているので、あまりリスキーなことができないので。

それで、ご提案の大まかな内容は理解できました。1.5に併せて解決されることを願っています。当方のテストマシンで動作確認もしてみたいので、diff等を示していただけたら幸いです。

Takahiro Kagoya への返信

Re: リモートRSS ブロック

- Hiroto Kagotani の投稿
最新の1.5alphaへのパッチを添付します。

言語が何かの特定をlib/setup.phpで行っているだけですので、この時点ではコースの言語が未設定です。そのため、表示時にはユーザの言語設定が優先となり、そのときのコース言語と合っていないと化けます。
block/rss_client/block_rss_client.phpでは、
define('BLOCK_RSS_SECONDARY_CACHE_ENABLED', false);
としておくとデバッグしやすいと思います。

RSS送信に関しては、たぶんサイトの言語設定となるんだと思いますが、まだいろいろな言語の組合せまでは試していません。こうした言語の混在についてはRSSに限らずあちこちで問題が起きていますので、RSSだけどうにかしてもしょうがないとは思います。こちらのデバッグ時には何度かリロードしないと、キャッシュが残ってしまいます。



Hiroto Kagotani への返信

Re: リモートRSS ブロック

- Takahiro Kagoya の投稿

パッチを確認しました。

./lang/ja に lib/charset.phpをdiffの内容を見て手作業で作成しました。(なぜか、./lang/ja_utf8/lib/charset.phpも自動的作成されなかったので)

それで、スラッシュドットジャパンのフィードを試したところ、正しく表示されました。すばらしい!

関連するページとして...
リモートRSSフィードブロックの設定画面で、使用するフィードの選択リストが化けます。
フィードの追加/編集画面のリストが化けます。

RSSの送信の方はまだ、試せていませんが、近いうちに試そうと思っています。

それと、あまり言語と関係ないのかもしれませんが、ブロック上部に表示されるタイトルが、自分で設定したものになったり、もともとのフィード指定しているサイトのタイトルになったりします。