« Flexに関する10の誤解 | メイン | XOOPSは、PHP5では動かない »

Topホームページ作成 > MySQL文字化け対策
2007年12月20日

MySQL文字化け対策

久しぶりに、linuxを立ち上げていじっています。
というか、MTとXOOPSのバージョンアップ前に、一度ローカル環境で試しておこうと思って、うちのlinux環境にMTとXOOPSをつくってたました。
もう、単純にMySQLのダンプから、リストアすれば済むと思ってたんだけれど、甘かった。MTの管理画面が、いきなり文字化けです。こんな感じ。

文字化けしたMT管理画面

なかなか、原因つかめなかったんですが、以下のページに書いてあった事を試したら、文字化け解消しました。どうも、MySQLのバージョンとも関係しているみたいです。

自己解決しました よくよく調べてみたところ使っていたMySQLのバージョンは5.0.41で skip-character-set-client-handshakeが使えないようですね。。。

そこでご指摘していただいたSET NAMESですが下記サイトが参考になりました
http://yossy.iimp.jp/wp/?cat=19

skip-character-set-client-handshake
の一文を消して
init_connect="SET NAMES utf8"
に書き換えたところ文字化けが治りました!

[ MySQLで文字化けします phpmyadmin MySQLとMovableTypeでサイトを構築していましたが、Nucleus(utf-8)を入れたところ文字化けしてしまいました my.cnfにて [mysqld] defaul.. - 人力検索はてな ]

ところが、今度はXOOPS側が文字化けです。どうやら、MTは文字コードがUTF-8で、XOOPS側はEUC-JPだったもんで、単純にはいかなかったようです。
結局、XOOPS側はDB接続部分のソースに手をいれました。以下のサイトを参考にしました。

7.XOOPS_ROOT_PATH/class/database/mysqldatabase.php にパッチを当てる

[ XOOPS Cube日本サイト - 文字コードのクライアントハンドシェークは正しい処理? ]

ここまでたどりつくのに結構苦労しました。かなりの時間を費やしてしまった。これで、ようやくバージョンアップ実験ができるところまで準備が出来ました。

[追記]
MovableTypeの設定にSQLSetNamesというのがあった。これを設定しておくと、MySQLの接続時にSET NAMES charcode;を実行してくれる。charcodePublishCharsetで指定した値となる。

PublishCharset utf-8
SQLSetNames 1

この記述を追加すればよい、XOOPS側をハックするよりも、設定ファイルに記述するだけなんで、リスクは少ないと思われる。

人気ブログランキング ←押すと一票入ります。

関連エントリー

こーいち ぶろぐ内の関連するエントリー:1件

トラックバックURL

このエントリーのトラックバックURL:

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • エントリーとあまりにも無関係な記事のトラックバック、または管理人が不適切と判断した場合は、削除させていただきます。
コメントする
  • 電子メールアドレスは必須ですが、表示されません
  • コメント蘭内でタグが使えます。
  • コメント欄内の改行はそのまま改行となります
  • コメント欄には、少なくとも1文字以上の日本語全角文字を入力してください

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