2007.05.24

XOOPS 2.0.16a、MySQL5.0での文字化け

・環境
Debian GNU/Linux 4.0
XOOPS 2.0.16a
Apache 2.0.55
mysql 5.0
PHP 4.4.2

データベースをUJISで作成しました。

上記の設定でXOOPSの管理画面に遷移したところ、
文字化けが発生してしまいました。

調べたところ、
MySQL 4.1 以降での文字コード自動変換機能
が原因のようでした。

MySQL 4.1 以降での文字コード自動変換機能を無効化にする
方法として、
[skip-character-set-client-handshake]
があるが、これを行うと、
XOOPS用のデータベースとXoopsの間がうまくいかず、
文字化けしてしまいました。

では、どのように対処したかというと、
XOOPSの初期設定をする前に

mysqldatabase.php の
function connect($selectdb = true) の中で、
結果をreturnする前に、
[(mysql_query("SET NAMES 'ujis';", $this->conn); ]
という記述を追加しました。

上記のようにしたところ、
XOOPSの管理画面、XOOPSとDB間の文字化けもなくなりました。

DBをUJISで作成しても、
XOOPSの初期設定を行うと文字コードがUTF-8になってしまうので、
強制的にUJISにする方法にしました。

あまりいい方法ではないのかもしれないが、
これで文字化けは解消できます。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
jnakamura