下のトピックよめませ ん

下のトピックよめませ ん

- Takahiro Kagoya の投稿
返信数: 6

この下のトピックで私が投稿した内容なのですが、ディスカッションタイトルがおかしくなっていて( /a> とかいうHTMLタグの一部らしきものが表示されていて)、クリックしても本文が読めません。
そのため、記事の削除もできません。Timさんがいわれてた、20バイトで勝手に空白を入れる処理が原因かもしれません。この投稿では、“よめませ ん”と、“ん”の前に空白が入っています。これはこまりますね。

再投稿お許しください。(以下、下のトピックで投稿した内容です。)

Win2k server + IIS5 + SSL + pop3認証というやや珍しい環境かもしれませんが、環境の設定ができ、Moodleの動作ができました。しかしそのセットアップについて、いくつか質問があります。

1:Moodleのlocaleには何を設定すればいいのでしょう? ja_JPとしてみたり、空欄にしてみましたが、曜日・午前午後の表示が(Sunday),AMのように英語表記になります。moodle.orgのページでは、ちゃんと(土曜日)午前になっています。実害はないのですが、気になっています。localeにjpとかjpnとかjapaneseと入力すると、曜日らしき日本語文字が文字化けして表示されます。ここの入力はOS(LinuxかWinか)によって指定方法が違うのでしょうか。 
文字化けの例:2004年 04月 3日(土曜楠' 呉1O10:26
localeの用語集では http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_language_strings.asp を見ろ...とあったので、jpnにしてみたのですが。

2:PHPのextensionで、mbstringは有効にする必要はあるのでしょうか。有効にしなくてもちゃんと動いた気がしますが、上の1や下の3に関係しているのか?と思い、一応、有効にして関係する部分をEUC-JPにしていますが...みなさんはどうされていますか?

3:クライアント(IE6)からアクセスしたとき、最初にページが表示される際、文字化けすることがあります。(条件を特定できていません。マシンによってなったりならなかったり)エンコードが西ヨーロッパ(Windows)と判断されているようです。手動で、ページの更新(F5キー)やメニューからエンコードを日本語(自動選択)に設定しなおすと、問題なく表示されるのですが。IISとの絡みでしょうか?みなさんのところではApacheでの利用が多いと思われますが、同じような症状はないでしょうか。

以上、参考になりそうなことがありましたら、ご助言ください。逆に私の上記のやや珍しい環境と同様のセットアップで、うまく行かない方がいらっしゃたら、分かる範囲で質問に答えたいと思います。

Takahiro Kagoya への返信

自己フォローです

- Takahiro Kagoya の投稿

locale関連ですが、以下のアドレスの一連のスレッドが関連していそうな気がしています。ということは、IISだとstrftimeをそのまま使う現状の表示方法では化けて当然...ということでしょうか。SJISにするわけにいかないし。
mbstringをうまくつかって回避できないものでしょうか。

http://ns1.php.gr.jp/pipermail/php-users/2003-September/018341.html

lnag/ja/moodle.phpで指定されているstrftime* の指定が、EUCの年・月・日といった文字を指定しているので、moodlelib.phpでの変更も必要になるでしょうか。

Takahiro Kagoya への返信

漢字コードの問題

- Joji Kariya の投稿
そのとおりでしょう。w2kを使うとlibcはOSの文字コードであるSJISを使ってしまいます。これに対してPHPやmySQLなどでEUCを使うように指定すると、曜日の部分だけコードが違ってしまうため文字化けします。
回避するには、すべてSJISに統一するしかないでしょう。
Joji Kariya への返信

Re: 漢字コードの問題

- Takahiro Kagoya の投稿

んー、やはりそうですか。SJISに統一というのと、moodleの方で、SJISで返す曜日を、EUCにして表示するようなスクリプトの集成するのでは、後者がいいですか?moodleはSJISでは運用できない...と勝手に思いこんでいるだけかもしれませんが。

それと、ページの更新をするまで(最初にMoodleのトップページを表示したとき)のエンコードの誤認の原因も、上のことと関連するのでしょうか。とりあえず、曜日が文字化けするのも困るので、localeを空欄にして、曜日は英語表記になるようにしていますが。

Takahiro Kagoya への返信

Re: 漢字コードの問題

- Timothy Takemoto の投稿

昔、翻訳の恩人・吉田さんに聞いたところ、SJISにはMYSQLのデータとデータを区分するコードが入っていますので、SJISをMYSQLで保管するのは、不可能に近いというお話をお聞いたと思います。

たしか私もマックを使っていませんからWindowsの基準であるSJISにしていただけないかといっていましたが、かなり前後処理しないかぎりではEUCを使うのができないといわれたと思います。


Timothy Takemoto への返信

Re: 漢字コードの問題

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
Moodleでは文字列中のバックスラッシュ(5c)を取除く処理を何箇所かで行っているようです。

SJISを使用した場合、「能」や「表」のようにバックスラッシュと同じコード(5c)を含む文字が文字化けしてしまいます。

当初、SJISでの翻訳も試みましたが予想通り文字化けが発生しました。Martinさんに日本語のみの特殊事情を加味して頂くことは多言語化の足枷になると判断して、広く使われているEUC-JPを使用した翻訳を行っています。

将来的には、utf-8による動作テストも必要であると思います。

SJISの文字化けに関しましては下記のページが分かりやすいと思います。
http://www.kent-web.com/pubc/jcode/
Timothy Takemoto への返信

Re: 漢字コードの問題

- Joji Kariya の投稿
MYSQLにかぎらずRDBではsqlを使って制御およびデータを渡しますが、この全体をひとつの文字列として渡します。この文字列から制御命令やデータを取り出すために制御文字が必要です。\や'や''など、たくさんの制御文字を使いますので、RDBが1バイト文字にしか対応していなければ、データ中にこれらの文字を含むときはあらかじめエスケープしなければ使えません。(英語データ中に制御文字を含む場合も同じです。)

最近のRDBは日本語対応になっていて、使える文字コードの指定もあるので、複数バイトコード中の制御文字はデータの一部として認識するようになっているはずだと信じているのですが、確かめたわけではありません。

怖いので、EUCかUNICODEのどちらかしか使っていません。