GD2・日付・テキストメールの文字化け対策

GD2・日付・テキストメールの文字化け対策

- Takahito Kashiwagi の投稿
返信数: 29

KAGOさん、YOSHIDAさんの参考を元に、さらに改変を行いました。また、テキストメールがEUCコードで送信されるのは何かと不具合がでるのではないかと思い、テキストメールに関してはiso-2202-jpで送信するように変更を行いました。

http://www.supertak.com/down/sample3.htm

に改変内容をまとめてあります。
これによりWindowsサーバ上で稼動する Moodle 1.5 dev の・・・。

1.GD2の日本語表示
2.日付の日本語表示
3.テキストメールの日本語表示(iso-2202-jpへ変更)

を改善しました。文字コードの変換に先日まではマルチバイトライブラリを使用していましたが、環境によってはPHPがマルチバイトに対応していない可能性があるため、外部ライブラリとして、jcode.phpを使用するようにしました。jcode.phpは再配布の問題がありますので、直接、http://www.spencernetwork.org/ よりダウンロードしてください。

なお、この改変は、
Windows 2K + Apache 1.3.31 + PHP 4.3.8 + Moodle 1.5 dev + GD2
という限られた環境でのみテストしています^^;

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahiro Kagoya の投稿

すばらしいですね。これまで懸念されていた事が、かなり改善されます。
メールの件は武本さんが切望されていましたが、これで解決されるのではないでしょうか。
http://moodle.org/mod/forum/discuss.php?d=9684#51701

これらがCVSに反映されるといいですね。言語依存な部分があるので、言語が'ja'かどうかで分岐させた方がいいかもしれません。

jcode.phpの利用については、利用規程に
著作権は放棄しませんが、スクリプトの一部または全部を使用・改造・再配布することは自由です。
とあります。moodleの配布に含められないでしょうか。

...といろいろ調べていたら、すでに以下の投稿がありました。http://moodle.org/mod/forum/discuss.php?d=10862#52383

このjcode.phpを使う形で、Excelファイルへの出力時にEUC-JP -> SJISの変換もあるといいと思います。

他力本願な事ばかり言ってすみません。

Takahiro Kagoya への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahito Kashiwagi の投稿

今の改良は使用環境があまりにも限定されてるので、もう少し、他の環境にも対応できるように条件的に日本語変換を発生するように改良しますね。また、オリジナルへの変更は最小限で済むように、それらを日本語ライブラリのような形でまとめまてみます。EXCELの件も同時に取り込んでみます。その際に、jcode.phpの設置位置など現在と仕様が少々変わるかもしれません。

jcode.phpの件は「再配布」可能なのであれば問題解決ですね。日本語ライブラリに取り込んでしまいましょう。

残る問題は、再配布可能なデフォルト用日本語フォントです。現在システムのフォントを参照していますが、本来は、../lang/ja/fonts フォルダ内にデフォルト名で存在するべきものです。再配布可能なTTF、できれば他の環境でも使用できるフォントということで、OTFが良いかもしれませんが、フォント探しが必要に思います。

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
ありがとうございます。 笑顔

フォントですが、こちらもご覧ください。
http://www.grass-japan.org/FOSS4G/readme-grass-i18n-ipafonts.eucjp.htm
Mitsuhiro Yoshida への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahiro Kagoya の投稿

フリーの日本語フォントの問題はいつもいろんなところでネックになりますね。

東風フォントの問題が解決する方向にあるようで、それに期待したいものですね。http://www.forest.impress.co.jp/article/2004/06/21/sazanami.html

それと、http://mikachan-font.com/index2.html みかちゃんフォント...っていう手はどうでしょう? 笑顔

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahito Kashiwagi の投稿

一応のところまとまって来ました。

http://www.supertak.com/down/sample4.htm

に改変内容をまとめてあります。できる限り簡単に改変できるように、改変場所を局所的にしました。

FONTはYoshidaさん紹介の独立行政法人情報処理推進機構のフォントを使用しています(http://www.grass-japan.org/FOSS4G/)。その他、日本語ライブラリとして、jcode.phpを用いています(http://www.spencernetwork.org/)。共に、http://www.supertak.com/down/sample4.htm からまとめてダウンロードできるようにしてあります。なお、それぞれの著作権表記を明記したTEXTファイルも添付しています。利用規約に従って使用してください。

現在、対応している内容として、

1.GDの日本語表示への対応
2.メールの文字コードをiso-2202-jpに統一。
3.日付表示の日本語表示への対応
4.EXCELワークシートの日本語表示への対応

となっています。まだ、EXCELのファイル名が日本語対応していませんが、ファイル名は変更できますので当面は問題ないかと思ってます。GDのレジェンド表記がちゃんとに動作するのか検証していません。メールは、jcode.phpの問題なのかもしれませんが、未だ文字化けする事があります。これらは、今後解決していこうと思います。

最後に、実はPHPは良くわかってません^^; PERLやC言語の知識を元に「カン」で手を加えています。ですので、不具合や処理自体に問題があるかもしれません。無駄な処理をしている可能性もあります・・。これを機にPHPを勉強してみようと思います>< こんな情けない状態ではありますが、何かのお役に立てれば幸いです。

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
最近では、mb関数を使用できないサーバが(海外も含めて)少なくなりつつありますので、下記のようなコードを使われても宜しいかと思います。

if (extension_loaded('mbstring')) {
  mb関数を使った処理
  } else {
  mb関数を使わない処理
}


>最後に、実はPHPは良くわかってません^^; PERLやC言語の知識を元に「カン」で手を加えています。ですので、不具合や処理自体に問題があるかもしれません。無駄な処理をしている可能性もあります・・。これを機にPHPを勉強してみようと思います><こんな情けない状態ではありますが、何かのお役に立てれば幸いです。

大変な作業を行って頂きまして誠にありがとうございます。心強いばかりです。

PHP関連の本は下記のものが実践的で使いやすいと思います。私も、頻繁に使っています。

PHP4逆引き大全 500の極意
高島 優作 (著)
出版社: 秀和システム
http://www.amazon.co.jp/exec/obidos/ASIN/4798003522/qid=1093983055/sr=1-1/ref=sr_1_10_1/249-6004667-5652364
Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahiro Kagoya の投稿

http://www.grass-japan.org/FOSS4G/license-ipafonts.eucjp.htm

ここにあるIPAフォントの条件文を読むと、GRASSを再配布に含めないといけない...ってことにはならないのでしょうか。 ちょっと心配。

それと、よく考えたらExcelファイル出力だけでなく、テキストファイルへの出力も現在EUCになっていて、PCに詳しくない先生方には、文字コードの説明からしないといけないですから、私のところではできればSJISで出力したいです。ただ、LinuxなどEUC環境を前提とされている人もいると思うので、どうでしょう? あぁ、それと、テキストファイルの場合改行コードの問題はどうなるでしょう?ややこしいですね。

ファイル名ですが、ダウンロードするときだけでなく、以前指摘した日本語ファイル名のファイルをフォーラムなどで添付した場合に、正しく添付ファイル名が表示されない問題もありましたね。

>実はPHPは良くわかってません^^; PERLやC言語の知識を元に「カン」で手を加えています。

あっ、私も同じく、これを機にPerlのCGIから脱してPHPやMySQL勉強しはじめた口です笑顔

YoshidaさんやKashiwagiさんをはじめみなさんのの努力で日本語整備が加速化しそうで、たのしみです。私も時間を見てコーディングの面でも協力したいと考えてはいるのですが...

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Timothy Takemoto の投稿

柏木様

このスレッドをもっと早く返事していなくてもうしわけございません。

念願のテキストメール文字化け解決及びエクセルファイル文字化け解決をβ版ではあるようですが、成し遂げそうになって、ありがたくて至福です。

内の大学はMaiYUという自家製メールソフトを使っています。ウィルス対策のためだそうです。たしかにOEなどよりずっとセキュリティーが硬いですが、HTMLメールは表示しません。しかし、テキストメールは少なくとも私のパソコンで文字化けします。これは私が使っているOEの問題だけかどうかわかりませんが、たとえMaiYUで正しく表示されても自宅でOEを使っている学生は文字化けしたメールをもらっているでしょう。

エクセルの問題は、私ならCVSをダウンロードして、サクラエディタでEUCい変化して、(その変化プロセスで「don't」とかの「'」を修正して)エクセルにインポートしますが、他の先生にムードルを見せると、えっこんなことまでしなければならないですかと呆れてしまいます。

ムードル独自のフォントをbundleするなんて、ワウ。

感謝感謝です。

しかし、さてと、どのようにインストールすればよいでしょう。私はこれから後期に向かってProductionサーバーの準備に負われますので、どうすればよいかわかりません。私は1.4を使っています。

柏木様の変更は1.4でも対応ですか?

これを本家で発表させていただきたいですが、いかがでしょうか?

武本TIM

Timothy Takemoto への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahito Kashiwagi の投稿

武本さんこんにちは。柏木です。

> しかし、さてと、どのようにインストールすればよいでしょう。

http://www.supertak.com/down/langlib.lzh
にあるlanglib.lzhをダウンロードし解凍します。中に、fontsフォルダとlibフォルダがあると思います。そのフォルダを、Moodleの/lang/ja/フォルダに入れます。

moodle - langフォルダ - jaフォルダ
                  - fontsフォルダ - default.ttf (ect. etc.)
                  - libフォルダ - jcode.php (ect. etc.)

のような構成になると思います。

次に、moodleのlibフォルダ内のmoodlelib.phpとgraphlib.php、lib/excelフォルダ内のWorksheet.phpの中身を少々改変します。改変内容は、http://www.supertak.com/down/sample4.htm に記載してあります。プログラムの赤い部分を元のファイルにコピーペーストで挿入すれば大丈夫です。挿入場所が分かりにくい場合は行番号を参考にして同じような部分を探してください。

> 柏木様の変更は1.4でも対応ですか?

こちらで確認したところでは、1.4でもほぼ同じ行に改変部位がありました。赤い部分を単純に挿入するだけで済むように工夫してあります。

> これを本家で発表させていただきたいですが、いかがでしょうか?

もちろん構いません。PHPをまだ良く理解していないのでソースが幼稚で、少し恥ずかしいですが・・・。これからPHPを勉強してもっとスマートな改変ができるように努力します。

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahiro Kagoya の投稿

テストマシン(WinXP Home+Apache2+php4.3.8 cgi版+Moodle1.5dev+GD2)上でテストしてみました。
長文になってしまいますが、気づいた点を挙げます。(メールの件はテストマシンではまだテストできていません)

まず、graphlib.phpの件。

IPAのフォントで表示されました。ただ、やはり、 '9 AM' というのが、'9 午前' (縦書きで、前午 9となる。)と表示されたり、日付が、日・月の順に表示されてしまいます。これは、本家の方での対応が必要ですね。localeに応じて、日時表示形式が違う...というのが正しい考え方だと思うので。
Activityの設定画面でのオプションメニューを使う日付指定も、月・日ではなく日・月の順で配置されてしまってますし。
名前の表示順が逆になっているバグは、いくつかBug Trackで報告したので直ってきてますが、まだ、いつくかの表示で、姓名でなく名姓になって表示されます。

次に、Worksheet.phpの件。

私の方のマシンでは、../../lang/$currlang/lib/jcode_wrapper.php では、正しく、読み込まれませんでした。global $CFG; を追加し、"$CFG->dirroot/lang/$currlang/lib/jcode_wrapper.php"と指定したら、正しく読み込まれました。
それと、行が、1035行〜1050行付近とありましたが、2081行から、write_string関数が始まってます。
Excelファイルへの出力ですが、評価と小テストで試してみました。評価でのファイル名が、CF101_Grades.xlsと英語ではなるので、日本語では、CF101_評価.xlsというファイル名になるべきですが、評価という文字がなくなります。セル内の文字は、正しくSJIS変換されて、日本語の名前等が正しく表示されます。シート名にも'Grades'と入るので、'評価'という文字が化けて入ってしまいます。
小テスト結果のExcelファイルへの出力も、ファイル名が、CF101_期末テスト.xlsのように、小テストのActivity名が入りますので、この'期末テスト'という部分がファイル名に付かない問題が生じています。セル内の文字(名前や解答)は正しく日本語表示されているようでですが、それ以外の見出しの言葉が'Item Response Analysis'というように英語のままになっています。

言語依存するロジックの部分をlang/ja内で、すべて吸収できる構造になっていないので、将来は、この点も対応されるといいですね。

Takahiro Kagoya への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahito Kashiwagi の投稿

KAGOさん、情報感謝です。

http://www.supertak.com/down/sample4.htm

graphlib.php の件は上記に修正版を記載しました。また、動作検証条件としてKAGOさんのテストマシン環境も記載させていただきました。事後報告で申し訳ありませんが、よろしいでしょうか?^^;

> IPAのフォントで表示されました。ただ、やはり・・・

確かに、GDの日本語のアライメントをなんとかしたいですね・・・。

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahiro Kagoya の投稿

ありがとうございます。

改めて、Worksheet.phpの行が異なるのを不思議に思い、サクラエディタで開いて見直したところ、改行コードが、CRになってました。これが原因で、サクラエディタでは1行空きで表示されてました。別のフォルダのファイルでは改行コードがCRLFのものが多く、正しく表示されますが、excelフォルダ内のファイルは、そうなっているようです。私だけでしょうか。CVS Archiveから辿って調べたところ、柏木さんの言われた行番号で正しいようです。失礼しました。

IPAのフォントは、再配布が可能かどうかよく調べた方がよさそうです。
http://slashdot.jp/articles/04/07/16/0624235.shtml?topic=36
http://lists.debian.or.jp/debian-devel/200407/msg00019.html
この辺りの記事が気になるのですが...

Takahiro Kagoya への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahito Kashiwagi の投稿

KAGOさん、YOSHIDAさんの参考を元にさらに改変を加えました。仕様がコロコロ変わっていますが、ようやくこれで仕様を固定できそうです。

多言語対応にふさわしいように、環境を限定的にせずに、比較的自由度を出せるように変更しました。パッチの起動判定には、新たに追加した、langlib.phpを使用するようにしました。また、mbstringの存在判定を加えました。日本語以外のマルチバイト言語でも文字化けするような場合、同じような仕様でパッチを作成し、langlib.phpを改変することで対応できるのではないかと思います。今後を見越して、コードもEUCに限定せずに、utf-8や、shift-jisからも対応できるようにしてあります。

http://www.supertak.com/down/sample5.htm
に説明があります。

<改定内容>
1.0.0 日本語ライブラリ公開
1.0.1 graphlib.phpのjcode.phpの呼び出しが正しく機能していませんでしたので修正しました。
1.1.0 多言語環境を意識し極力日本語特有の名称を無くし、langlib.phpを追加した。
1.1.1 mbstringが使用できる場合、使用するように分岐制にした。
1.1.2 EUC環境に限定しないよう、langlib.php内にて現コードを指定できるようにした。

となっています。

> IPAのフォントは、再配布が可能かどうかよく調べた方がよさそうです。

これは確かに問題ですね。もし、Grassを同封するとなると、これがまた非常に巨大です。FONTをKAGOさん紹介のものに変更したほうが良いのでしょうかね。私も探してはいるのですが、どのFONTもいささかグラフに使用するにはポップすぎます^^;

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahiro Kagoya の投稿

ソースを眺めていて、思った点を挙げさせて頂きます。勘違いがありましたら、お許しください。

  1. current_langgeは、私が言い出しっぺですが、langlib.phpの有無で条件分岐するなら、'ja'固定ではまずいでしょうか。つまり、$CFG->dirroot/lang/ja/lib/langlib.php としてしまうというので。
  2. moodlelib.phpのsetlocale(LC_ALL,$CFG->locale)ですが、'en'以外としてますが、そのまんま入れる(ifで囲まない)方向で本家に対応してもらえないかと思っています。  http://moodle.org/mod/forum/discuss.php?d=8655 ここで以前指摘したのですが、フォローがえられていません。
  3. graphlib.php, moodlelib.php,Worksheet.php これらそれぞれのオリジナルの変更を極力なくす(langlib.phpのinclude_once1行だけにする)ために、if内の行の処理を別ファイルにまとめ、lagn/ja/lib/ 以下に置くというのはどうでしょう。
Takahiro Kagoya への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahito Kashiwagi の投稿

> 1.

これは私も一時考えましたが、生意気にも多言語環境を意識してやめました。Moodleは利用者が閲覧言語を切り替えるスイッチをもってます。もし、./ja/を入れてしまうと、利用者が言語をenに切り替えてもトリガーが引かれてしまいます。ここを、/$currlang/とすることで、利用者の閲覧言語に合わせてトリガーを引くか引かないか決めることができます。例えば、今回の変更では閲覧言語をenにした場合は、どのパッチも動作しないと思います。逆に言えば、言語フォルダ下に設置するlanglib.php内の関数を書き換えておけば、閲覧言語毎に別の機能を提供する事も可能になります。それなら、最初からトリガーをjaかenだけで判断したらいいのでは?とも考えたのですが、今度は、使用サーバ側の問題でjaで使用していてもトリガーを引く必要がないサーバがあるかもしれない。というわけで、最終的に今回の形になりました。

> 2.

私も同感です。しかし、本家の対応が未だ不明なので、現ソースに何らかの意味があるのかもしれないと思い、暫定的に、'en'以外としてます。

> 3.

最終的にはこれを目指しています。その為もあって、jcode.phpのトリガーから、langlib.phpに変更しました。最後にはこのライブラリ内に全ての関数をまとめることが可能になるだろうと考えています。またこれも多言語を意識して、極力jやjaやjpなどのファイル名を避け汎用性を出しました。本家がどんなに多言語に対応しようとしても、やはり使用言語毎に細かい不具合が今後もでると思います。langlib.phpのような使用言語依存的なトリガーを本家でも取り入れてくれれば、使用言語毎にカスタマイズが必要な場合に改変が容易になると思います。

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahiro Kagoya の投稿

なるほどぉ。感心しました。この形式で多言語対応のロジック処理を、本家が採用してもらえると助かりますね。

前回の投稿では、$currlang で分岐した中に、 shift_jis や iso-2022-jpなどの文字コードを限定した行が入ってしまっているのが気になってました。 
3. の形で、langlib.php の方に移すということであれば、解決することかもしれませんね。

短期間に、ここまでまとめていただいて、ただただ感心するやら感謝するばかりです。

Takahiro Kagoya への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahito Kashiwagi の投稿

現在のところ、IPAフォントの再配布条件が不確定なため、langlib112.lzhからはIPAフォントを外しておきます。

個別に、TTFONTを用意していただき、defalut.ttfと改名したうえで、/lang/ja/fonts 内に設置してください。

IPAフォントは、
http://www.grass-japan.org/FOSS4G/readme-grass-i18n-ipafonts.eucjp.htm
より入手できますので、使用条件を読み、内容を確認した上で個別に入手してください。

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Hiroto Kagotani の投稿
GDで日本語の文字の回転ができない問題を調べていたら、このような情報がありました。
http://takeno.iee.niit.ac.jp/~shige/unix/gnuplot/gnuplot.html#info-20050308

Moodle側で解決する問題ではなく、フォントライブラリ側の問題で、gdにパッチを当てることで回避することも可能なようです。

ご参考まで。
Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahito Kashiwagi の投稿

少々不具合を発見しました。メール送信の際に、mbモジュールを使用する条件の場合、プログラムは実行されるのですが、ワーニングが発生しているようです。

mbモジュールでは、iso-2202-jpという指定ができないのでしょうか?jisとするのがPHPのmbモジュールでは正しい設定ですか?後ほど調べて変更してみようと思いますが・・・。

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahito Kashiwagi の投稿

現在、時間がないので、暫定処置です。MAILのパッチ部分を、

    $currlang = current_language();
    if (!$messagehtml && file_exists("$CFG->dirroot/lang/$currlang/lib/langlib.php")) {
      include_once("$CFG->dirroot/lang/$currlang/lib/langlib.php");
      $lang_code = rtn_lang_code();
      if (extension_loaded('mbstring')) {
        $lang_conv = 'mb_convert_encoding';
      } else {
        $lang_conv = 'lang_convert_encoding';
      }
      $mail->FromName =  $lang_conv($mail->FromName, "sjis");
      $mail->Subject  =  $lang_conv($mail->Subject, "jis");
      $mail->Body     =  $lang_conv($mail->Body, "jis");
      $mail->CharSet  =  "iso-2022-jp";
      $mail->Encoding =  "7bit";
    }

と変更です。いつの間にか「!$messagehtml」の条件も抜けてました。ついでに、差出人名の日本語表記にも対応しました。暫定処置ですので、これが正しいのか不明です。後ほど、じっくり不具合の有無を検討します。しかし、日本語環境は、あれはeucだの、これはjisだの、それはsjisだの、本当に複雑で困りますね・・・。

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahiro Kagoya の投稿

私も全然メールヘッダのことに詳しくないですが、

mb_send_mailを使うのでなければ、自前で、ヘッダはiso-2022-JPへのMIMEエンコードが必要のような気がします。mb_encode_mimeheader
を使うのでしょうか。
メールの動作確認ができてませんので、推測ですが...

思いつきで、探してみたURLです。

http://school.a-la.net/hint_tips/PHP/php_2.htm
http://sb.xrea.com/archive/index.php/t-5644.html
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=10&topic=11060
http://www.komonet.ne.jp/~php/chap15.htm

Takahiro Kagoya への返信

Re: GD2・日付・テキストメールの文字化け対策

- Takahito Kashiwagi の投稿

KAGOさんの情報を元に、自前MIMEエンコを行ってみました。また、送信者、あて先、CC、BCCの日本語表示にも対応してみました。ダラダラと長くなってしまいましたが^^;;自前エンコ部分をfunction化したら良いのかも知れませんね。とりあえずはこの状態で公開です。

    $currlang = current_language();
    if (!$messagehtml && file_exists("$CFG->dirroot/lang/$currlang/lib/langlib.php")) {
      include_once("$CFG->dirroot/lang/$currlang/lib/langlib.php");
      $lang_code = rtn_lang_code();
      if (extension_loaded('mbstring')) {
        $lang_conv = 'mb_convert_encoding';
      } else {
        $lang_conv = 'lang_convert_encoding';
      }
      $mail->FromName =  $lang_conv($mail->FromName, 'iso-2022-jp');
      $mail->FromName = "=?ISO-2022-JP?B?".base64_encode($mail->FromName)."?=";
      $mail->Subject  =  $lang_conv($mail->Subject, 'iso-2022-jp');
      $mail->Subject  = "=?ISO-2022-JP?B?".base64_encode($mail->Subject)."?=";
      $mail->Body     =  $lang_conv($mail->Body, 'iso-2022-jp');
      $mail->CharSet  =  'ISO-2022-JP';
      $mail->Encoding =  '7bit';
      $i = 0;
      while($mail->to[$i][1]) {
         $mail->to[$i][1] = $lang_conv($mail->to[$i][1], 'iso-2022-jp');
         $mail->to[$i][1] = "=?ISO-2022-JP?B?".base64_encode($mail->to[$i][1])."?=";
         $i++;
      }
      $i = 0;
      while($mail->cc[$i][1]) {
         $mail->cc[$i][1] = $lang_conv($mail->cc[$i][1], 'iso-2022-jp');
         $mail->cc[$i][1] = "=?ISO-2022-JP?B?".base64_encode($mail->cc[$i][1])."?=";
         $i++;
      }
      $i = 0;
      while($mail->bcc[$i][1]) {
         $mail->bcc[$i][1] = $lang_conv($mail->bcc[$i][1], 'iso-2022-jp');
         $mail->bcc[$i][1] = "=?ISO-2022-JP?B?".base64_encode($mail->bcc[$i][1])."?=";
         $i++;
      }
    }

Takahito Kashiwagi への返信

Re: GD2・日付・テキストメールの文字化け対策

- Timothy Takemoto の投稿
GD2の日本語対応問題は、本家正規Moodleでもう解決済みでしょうか、との質問をBug trackerで受けました。
http://tracker.moodle.org/browse/MDL-4156
文字化けしているという印象がありませんが。。。
Timothy Takemoto への返信

Re: GD2・日付・テキストメールの文字化け対策

- Haruhiko Okumura の投稿
Moodle全体の日本語対応は,問題がたくさん残っており,あちこちをいじらないと使えない状態なのですが,それはさておいて,GD2の問題は,今は特にないだろうと思います。日本語フォントとしては

http://dicey.org/vlgothic/

で配付されているVL-Gothic-Regular.ttfをうちではお薦めしています。これをlib/default.ttfに置き換えます(うちではシンボリックリンクにしています)。

うちではsazanamiフォントやIPAフォントでは文字の回転がうまくいきませんでした。IPAフォントのライセンスは最近大幅に緩和されましたし,フォントとしてはIPAフォントが一番良くできているのですが。
Haruhiko Okumura への返信

Re: GD2・日付・テキストメールの文字化け対策

- Timothy Takemoto の投稿

奥村先生

どうもありがとうございます。

「問題がたくさん残っており,あちこちをいじらないと使えない状態」が全てtrackerに入っているでしょうか。報告するものがありましたらお教えいただきたいです。

武本

Timothy Takemoto への返信

Re: GD2・日付・テキストメールの文字化け対策

- Haruhiko Okumura の投稿
海外でも通用しそうなものはいくつかtrackerまたは英語のフォーラムに書き込んだことがあるように思います(あまり対応していただけなかったように思いました)。

日本語固有のものはtrackerでは報告していません(経験から本家ではなかなか採用してもらえないだろうという気持ちもあったのですが,私の怠慢かもしれません)。その代わり,「三重大版」と称して,かなり私の好みも入れたものを配布させていただいています。喜多先生も,Windows版については白井先生も,それぞれ独自に日本語固有の問題を解決したものを配布しておられます。こういったものをまとめて,日本のユーザのために決定版を配布し,本家にも採用を促すのが,今回のNIMEでのコンソーシアム作りの大きな目的ではないかと私は勝手に思っています(別の思惑を持っておられるかたもおられるかもしれません)。ぜひ武本先生のお力をお借りできれば幸いです。
Haruhiko Okumura への返信

Re: GD2・日付・テキストメールの文字化け対策

- Timothy Takemoto の投稿

日本語固有のものはたしかに対応が遅いですが、多くの日本語固有のものはそのたの2バイト言語で似ているような問題に相当しますし、たとえば電子メールをUTFではなく別の文字コードで送信するように設定できる機能は、日本語のユーザーの私のお願いに応じたものだったかと思います。

しかし、たしかに、私の感触では本家はなかなた日本語固有のバグをなかなか解決してくれないと思います。

> 今日本のユーザのために決定版を配布し,本家にも採用を促すのが,回のNIMEでのコンソーシアム作りの大きな目的ではないか。

コンソーシアムには参加したかったです。今後、よろしくお願いします。

武本

Timothy Takemoto への返信

Re: GD2・日付・テキストメールの文字化け対策

- Tatsuya Shirai の投稿
白井です.日本語Windowsへの対応を行っています.

当初は日本語Windows固有の問題だけを対策すれば良いと思っていたのですが,ファイル名/フォルダ名/リンクアドレスにマルチバイトを用いると発生する問題が思った以上に多く残されていることを知りました.ZIP/UNZIPやWikiなど,外部から取り込んだコードにも手を入れる箇所があります.ただ,致命的(データベースが壊れる,など)な問題ではなく,表示が正しくない/表示できない,といった程度ですので,大半は利用者側の使い方で回避できます.

要望は,Moodle1.8にアップグレードされた際に,カレンダーの年月日の文字化け問題が一部,対策されていましたが,不完全でした.
http://moodle.org/mod/forum/discuss.php?d=68531
この箇所は本家で対応して頂けると助かります.Moodleをインストールして立ち上げた直後に目に触れる場所ですので,「おお?文字化けしている...」とガッカリされた方も多いと思います.

#私の対策が完璧かつ最良とは思えませんので,どなたかもっと美しく修正して頂けないでしょうか赤面