日本語検索と日時表示の文字化け

日本語検索と日時表示の文字化け

- Takahiro Kagoya の投稿
返信数: 3

1.5リリースを控えてMartinをはじめ、開発の方々が大忙しのようで、対応して頂けないような気もしますが、あえてここで、すでに話題に挙げた日本語関連バグについて書きます。

1. 日本語文字列でのフォーラム検索

日本語文字列での検索をした際、結果がハイライト処理のために化ける件ですが、解決しているようです。どうもこれへの対策のおかげかと思っています。
http://moodle.org/bugs/bug.php?op=show&bugid=2323

ところが、文字化けはしないのですが、逆にハイライト処理もされません。

これまで
http://moodle.org/mod/forum/discuss.php?d=6633
こちらを参考に手作業でリリースのたびに変更をしてきましたが、さらに問題が複雑化しました。複雑な

2. Windows環境での日時の文字化け
http://moodle.org/mod/forum/discuss.php?d=8329
こちらで指摘し、武本先生に
http://moodle.org/bugs/bug.php?op=show&bugid=1619
こちらへの投稿をして頂きました。
さらに
http://moodle.org/mod/forum/discuss.php?d=11891
こちらで、再度提案していますが、CVSに反映がされていません。

それと、題名とちょっと話がずれますが...
http://moodle.org/mod/forum/discuss.php?d=13558
こちらのスレッドで柏木さんのハックを武本先生が取り上げて頂いていますが、1.5リリースへのマージがどうなるか、ちょっと気になります。

Takahiro Kagoya への返信

Re: 日本語検索と日時表示の文字化け

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
詳細な情報ありがとうございます。
常日頃より、日本におけるMoodleの発展にお力添えを頂きまして心より感謝致します。

>ところが、文字化けはしないのですが、逆にハイライト処理もされません。

1.5 dev でしたら moodle/lib/weblib.phpの1400行目を下記のように変更すると日本語でもハイライトするようになります。

 $list_of_words = $needle;

過去にも全く同じことをしていました。 複雑な
http://moodle.org/mod/forum/discuss.php?d=6413


http://moodle.org/bugs/ に報告させて頂きました。
Mitsuhiro Yoshida への返信

Re: 日本語検索と日時表示の文字化け

- Takahiro Kagoya の投稿

失礼しました。いつもは自分の環境で確認しているのですが、今回は、moodle.orgの検索で、このような症状だったので、weblib.phpの該当箇所の修正を確認せずに書き込みました。

今、1.5devで確認したところ、確かに、いつも通りの修正をすれば、アルファベット、日本語とも問題なく検索されハイライト処理されます。後はCVSに反映されれば、問題が一つ解決です。

ただ、逆にeregi_replaceの処理をキャンセルすることで、問題があるのでしょうか。以前吉田さんが、「指定した以外の文字が検索文字列に入っている時に空白と置き換える処理」と説明されていましたが、指定した文字というのは具体的にどのような文字列の場合なのでしょう。アルファベット以外ということでしょうか。 となると、英語圏のことを考えると、このエラー処理は省けないということになるので、ダブルバイト文字と共存する処理にする必要があるのかもしれませんね。

Takahiro Kagoya への返信

Re: 日本語検索と日時表示の文字化け

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
>ただ、逆にeregi_replaceの処理をキャンセルすることで、問題があるのでしょうか。

セキュリティ上の問題があるかもしれません。



>指定した文字というのは具体的にどのような文字列の場合なのでしょう。

[moodle/lib/weblib.phpの1400行目]
$list_of_words = eregi_replace("[^-a-zA-Z0-9&.']", " ", $needle);

a〜z 、A〜Z、 0〜9、& 以外の文字です。