RDF が文字化けする


投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/10/28 0:47 | 最終変更
OhYeah  半人前   投稿数: 24

以前の d3diary でどうだったかは記憶にないんですが、少なくとも 0.12a2 以降では、私の環境では RDF が文字化けします。rdf.php 内の mb_convert_encoding の第3パラメータ(from_encoding)に 'auto' を指定すれば OK なので、私のサイトの mbstring 周りの設定の問題でしょうか? 現状では、下記のようになっています。

1
2
3
4
5
6
7
8
PHP Version 5.2.5
mbstring.detect_order = 'auto'
mbstring.encoding_translation = Off
mbstring.http_input = 'auto'
mbstring.http_output = 'pass'
mbstring.internal_encoding = 'UTF-8'
mbstring.language = 'japanese'
mbstring.strict_detection = Off
投票数:4 平均点:10.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/10/28 9:37 | 最終変更
なーお  長老   投稿数: 1746

OhYeahさん、こんにちは。

ご報告、ありがとうございます。

今回、共通関数に変更した時に、エンコード変換をかける順番が変わったことも影響していそうです。 いずれにしても、"auto"指定が良さそうですね。

あと、別の問題としてタイトル周りにhtmlspecialcharをかけていなかったのでその修正も行ってみました。 以下のファイルでいかがでしょう。お試しいただけますでしょうか。
(これも別件ですが、カテゴリ選択で子カテゴリの記事が抽出されていなかった件も修正しています。)

filerdf.php

よろしくお願いします。
(rdf周りはいつも後手後手です・・ :-(

投票数:1 平均点:10.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2010/10/29 0:25
OhYeah  半人前   投稿数: 24

_MD_DIARY_PERSON, $xoopsConfig['sitename'], $xoopsModule->name(), $line['title'] の辺りに 'auto' が付いていなかったので、まだ結構化けます。

'auto' 付きにして良いってことなので、自分で書き換えました。ついでに、mbstring が disable な環境でも使用できるように修正してあります。
全文配信のためのしかけもしましたが、substrTarea のパラメータを確認していないので、未実装です。
このほか、rdf ソースのインデントの狂いや <dc:creator> の追加など細々としたところを修正してあります。
http://www.o-ya.net/modules/d3downloads/index.php?page=singlefile&cid=6&lid=2

rdf チャンネルの title や description などはユーザがカスタマイズできた方が便利なので、暇があったら配信内容をテンプレートで処理するようにしようかと思っています。

投票数:3 平均点:10.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/10/29 22:29 | 最終変更
なーお  長老   投稿数: 1746

OhYeahさん、こんにちは。

mb_convert_encodingの第3引数を"auto"指定とすることで、別の環境で問題が出る可能性もありますので、このあたりもオプション指定したいところではありますね。

問題は、オプション指定の方法です。 テンプレート化するだけで済めば良いのですが、テンプレートの編集もままならない人向けに管理画面で細々としたところまで指定できるようにするかどうか。。 するとなれば、管理画面に1ページを費やしたいところですね。

提示いただいたソースは、今後の参考にさせていただきます。 ありがとうございました。

なお、d3diary自体、mb_関連functionが前提になっています。 そのうち、無い場合の代替関数定義を実装しようかな、と思っていますが、、いつになるかは未定です。

投票数:2 平均点:10.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010/10/31 1:21
OhYeah  半人前   投稿数: 24
引用:
mb_convert_encodingの第3引数を"auto"指定とすることで、別の環境で問題が出る可能性もありますので、このあたりもオプション指定したいところではありますね。

気になっていたのはそこです。第3パラメータ無しなら internal_encoding が使用されるので、本来なら 'auto' より問題が出にくいはずです。全部 'auto' 付きに書き換えるのは簡単ですが、やっちゃっていいものかなあと…。
それに、自分で勝手に書き換えちゃうと、rdf.php がアップデートされる度にソースを書き換えなきゃなりません。なわけで、書き換えが1か所ですむように、関数化したわけです。mbstring 無しの環境にも対応させたのはおまけに過ぎません(あれは xoops_utf8_encode のバグを取っただけですし)。

引用:
問題は、オプション指定の方法です。 テンプレート化するだけで済めば良いのですが、テンプレートの編集もままならない人向けに管理画面で細々としたところまで指定できるようにするかどうか。。 するとなれば、管理画面に1ページを費やしたいところですね。

う?ん、テンプレート編集がままならない人が、どれくらい管理画面で細かな設定をするかなあ…。とりあえずは、プリファレンスに from_encoding を設定する項目がひとつあれば OK だと思います。これさえあれば、rdf.php がアップデートされても毎回 rdf.php を書き換える必要はなくなりますから。
あとは、rdf だとカスタマイズするっていっても、せいぜい rdf チャンネルの title と description くらいですよね。別ページまでは不要かも…。

投票数:1 平均点:10.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/10/31 2:56
OhYeah  半人前   投稿数: 24

uid 無指定の場合に、各記事の作成者が取得できていなかったバグを修正しました。
http://www.o-ya.net/modules/d3downloads/index.php?page=singlefile&cid=6&lid=2

投票数:3 平均点:10.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2010/10/31 6:23 | 最終変更
なーお  長老   投稿数: 1746

OhYeahさん、こんにちは。

バージョンアップのご報告、ありがとうございます。 そういえば、各記事の作成者は取得していなかったですね。。 :roll:  記事数分回すとアレなんで、こちらで実装するときは、元の記事取得のSQLにINNER JOINで書こうと思います。

いずれにしても、次の版ではテンプレート化をすることにしますね。 そうしておけば、将来ATOMやRSS2.0を作るのも楽できますし。 :-D
(オプションについては、ご指摘のようにそれほどの内容ではないですね。 取り急ぎ"auto"の件だけでも良さそうですね。)

その際にも、動作報告など、どうぞよろしくお願いします。

確認ついででお願いなのですが、今回追加したもので、カテゴリ・記事権限をユーザー指定する際の、「suggestion」機能をxpWikiを参考にajaxで組み込んだのですが、これが日本語ユーザー名(または日本語本名)で正常に動作しますでしょうか、動作チェックいただけると大変助かります。 

(追伸)
別件ですが、d3forumの独自色調無効化(テーマ色調反映)ハック版を作成中です。 元記事権限ハックその他、全部突っ込む予定です。 本名表示も対応予定。 何か要望ありますか?

投票数:3 平均点:10.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010/10/31 12:47 | 最終変更
OhYeah  半人前   投稿数: 24
引用:
記事数分回すとアレなんで、こちらで実装するときは、元の記事取得のSQLにINNER JOINで書こうと思います。

確かに。普段使っている SQLite だと、別テーブルから JOIN したフィールドを取得するより、それぞれのマスターテーブルから別途検索した方が高速なので、ついそのクセが…。

引用:
いずれにしても、次の版ではテンプレート化をすることにしますね。 そうしておけば、将来ATOMやRSS2.0を作るのも楽できますし。

実は、昨夜テンプレート版も完成してたんですが、全文配信が未実装だったので、0.2 の方を上げました。
現在は 0.3 で、テンプレート化及び全文配信対応版です。とりあえず、全文配信するかどうかはテンプレートの先頭で指定するようにしてあります。

カテゴリー・記事権限については、あとで確認してみます。d3forum については、今のところ特に要望はありません。

投票数:4 平均点:10.00
返信する
前の投稿 - 次の投稿 | 親投稿 - | 投稿日時 2010/10/31 13:22
OhYeah  半人前   投稿数: 24

記事毎の権限設定は OFF なので、カテゴリ編集だけ確認してみましたが、日本語に関しては特に問題はなさそうです。

ただ、「カテゴリーの編集」テーブルのカラム配置は、なーおさんの意図通りでしょうか? 私のサイトだとサブカテゴリーがないせいか、配置がおかしいです。

投票数:2 平均点:10.00
返信する
OhYeah

なし Re: RDF が文字化けする

msg# 1.1.1.2.1.1.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010/10/31 17:27 | 最終変更
OhYeah  半人前   投稿数: 24

プリファレンスに from_encoding オプションが追加されるまで、テンプレートで from_encoding も指定できるようにしようかと思ったのですが、面倒なので設定ファイルから読み込むようにしました。ついでに、全文配信オプションも、テンプレートではなく設定ファイルで指定するように変更しました。
http://www.o-ya.net/modules/d3downloads/index.php?page=singlefile&cid=6&lid=2

しかし、よく考えてみたら、テンプレート化したってことは、テンプレートで全文配信部分をコメントアウトすれば全文配信はされないってことなので、$fullcontent って必要なかったですねorz。

1
<{*    <content:encoded><![CDATA[<{$entry.content}>]]></content:encoded>*}>

なお、ユーザ名取得は 0.3 と同じ方法で、変更していません。

投票数:3 平均点:10.00
返信する

このトピックに投稿する

題名
ゲスト名
投稿本文
  条件検索へ