xoopsのUTF8化で、phpmyadminでデータベース参照時の文字化け回避
ちょっと長いタイトルだが、回避できたのでメモ。xoops本体のUTF-8化は比較的簡単だが、このままインストールするとmyphpadminでデータベースを見ると文字化けしてる。このデーターをダンプしてみても、文字コードを変更してしても文字化けが治らないので、バックアップ体制を考えると不安でたまらなかった。以下にこれの回避方法と環境をメモしておく。忘れると大変だから。
【状況】
インストール後、xoopsを開くが文字化けなし。UTF-8表示が成功しているように見えたが、myphpadminからデータベース内を見てみると日本語が判別不能な文字化けを起こしている。xoopsの管理画面から設定画面で日本語を入力してみるが、xoopsではきちんと表示されるもの、phpmyadminでは文字化け発生。
【状況回避】
.htaccessをフォルダに置く
php_value output_handler none
php_value default_charset UTF-8
php_value mbstring.language uni
php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_input autophp_value mbstring.http_output pass
php_flag mbstring.encoding_translation On
php_value mbstring.detect_order auto
php_value mbstring.substitute_character none
んで、xoopsのフォルダにある /class/database/mysqldatabase.php に変更を加える。
236 244行目付近の$result =& mysql_query($sql, $this->conn); $result = mysql_query($sql, $this->conn);の上部に、
mysql_query(“SET CHARACTER SET UTF8″, $this->conn);
を追加する。
これで修正してみたら、バッチリ。管理画面から日本語を入力してみると、xoops側もphpmyadmin側も文字化けなし。ただ、通常インストール後にこのパッチを当てたので、一部日本語が文字化けしているが、管理画面かmyphpadminから修正すれば文字化けしないで表示される。
ひょっとしたら、パッチを当てた状態でインストールすれば、まったく文字化けのない状態でインストールできるかもしれない。
【追記】
mysql_query(“SET CHARACTER SET UTF8″, $this->conn);
この文字コード指定だが、UTF-8,ja-UTF8,utfなどをそれぞれ実験してみたが、myphpadminの文字列が文字化けしないのはUTF8だけだった。普通はUTF-8だと思うのだが、なにかしら不安は残る。まだ検証の余地はありそう。



















.htaccessはどこのフォルダに置くのですか?
とりあえずrootに置くとページの表示がされなくなります。