趣味のブログ - UTF-8 化のジャマをしてたのは cubeUtils の設定不備だった
「メインサイトをリニューアル」で書いたように、このサイトのデータベースは最初から UTF-8 で保存されていて、互換モジュールのプリファレンスも「使用言語」が「ja_utf8」になっています。なのに、<{$xoops_charset}> には何故か「EUC-JP」が返ってきてしまい、コンテンツも EUC-JP に変換されている…。しょうがないので、EUC-JP のテーマを使用して、HTML 出力のみ EUC-JP で運用してました。
どうも納得がいかないので、言語周りの各種ファイルを調べていて最後に引っかかってきたのが、cubeUtil の MultiLanguagePreLoad.class.php です。マルチランゲージでは使用していないので、このプリロードを削除してみたら、見事に UTF-8 で出力されるようになりました。
実際には、MultiLanguagePreLoad.class.php そのものの問題ではなく、このプリロードがインクルードする /modules/cubeUtil/class/MultiLanguage.class.php が EUC-JP 用の言語設定ファイルを読んでいたのが原因です。
MultiLanguage.class.php は言語設定ファイルとして /modules/cubeUtils/include/conf_ml.php が存在すればそれをインクルードしますが、ない場合はデフォルトとして EUC-JP 用の /modules/cubeUtils/include/conf_ml.dist.php をインクルードします。ってことで、include ディレクトリに同梱されている conf_ml.ja_utf8_sample.php を conf_ml.php にリネームして、ちゃんと UTF-8 用の言語設定ファイルをインクルードするようにすれば、MultiLanguagePreLoad.class.php が /preload ディレクトリにあっても UTF-8 で問題なく使用できます。
XUGJ にマニュアルがあって、こちらには conf_ml.php の件が書かれていました。マニュアルの存在に気づかず、えらく遠回りをしてしまった…。
実際には、MultiLanguagePreLoad.class.php そのものの問題ではなく、このプリロードがインクルードする /modules/cubeUtil/class/MultiLanguage.class.php が EUC-JP 用の言語設定ファイルを読んでいたのが原因です。
MultiLanguage.class.php は言語設定ファイルとして /modules/cubeUtils/include/conf_ml.php が存在すればそれをインクルードしますが、ない場合はデフォルトとして EUC-JP 用の /modules/cubeUtils/include/conf_ml.dist.php をインクルードします。ってことで、include ディレクトリに同梱されている conf_ml.ja_utf8_sample.php を conf_ml.php にリネームして、ちゃんと UTF-8 用の言語設定ファイルをインクルードするようにすれば、MultiLanguagePreLoad.class.php が /preload ディレクトリにあっても UTF-8 で問題なく使用できます。
XUGJ にマニュアルがあって、こちらには conf_ml.php の件が書かれていました。マニュアルの存在に気づかず、えらく遠回りをしてしまった…。
トラックバック
トラックバックpingアドレス http://www.o-ya.net/modules/d3blog/tb.php/34
コメント一覧
OhYeah!
投稿日時 2010.09.25 12:38
すしさん、はじめまして。
ご指摘ありがとうございます。おっしゃるとおりですね。全然気づいてませんでした(^_^;)。先ほど、本文を修正しました。
ご指摘ありがとうございます。おっしゃるとおりですね。全然気づいてませんでした(^_^;)。先ほど、本文を修正しました。
すし
投稿日時 2010.09.25 10:58
追記です。
> /modules/cubeUtils/class/conf_ml.php が存在すればそれをインクルードしますが、
とありますが、/modules/cubeUtils/include/conf_ml.php が存在すれば…
が正解ではないでしょうか?
今後ハマる方の為にあえてご報告してみました。
すみません。
おかげ様で当方の悩みは解決しました。
ありがとうございます。
> /modules/cubeUtils/class/conf_ml.php が存在すればそれをインクルードしますが、
とありますが、/modules/cubeUtils/include/conf_ml.php が存在すれば…
が正解ではないでしょうか?
今後ハマる方の為にあえてご報告してみました。
すみません。
おかげ様で当方の悩みは解決しました。
ありがとうございます。
すし
投稿日時 2010.09.25 10:44
この情報かなり探してました。
ありがとうございます。
Ja-UTF8化でこれにハマってる人多いんじゃないでしょうか
大変助かりました。
ありがとうございます。
Ja-UTF8化でこれにハマってる人多いんじゃないでしょうか
大変助かりました。
3件表示
(全3件)
すべてのコメント一覧へ