PHP MySQL で格納したデータが文字化けする時の対処法

PHP + MySQL で、ままある文字化け対策ですが、今回、サーバーの移行で、PHPと元のデータベースはEUC-JPで、Mysql5.1を使おうとして起こった文字化けに有効だったのでメモ。

去年か一昨年あたりのサーバーからすっかりUTF-8に統一しているので、忘れかけていたというか、あまり御縁のなくなってきた、日本語の「文字化け」問題。
今回はサーバーの更新なので、新しくロジックを見なおしたり、DBをいじったりせずにすっと移動したいもの。予算もないしね。

移行元のphpファイルのエンコードはEUC-JP、MySQLのDBもEUC-JPでそのままエクスポート&インポートで移行。
既に登録済みのテーブル参照(Select文)は、文字化けしないのですが、新期にデータを作ると(Insert文)化けて????のオンパレードになってしまいました。

PHPやDBの中をEUC-JPにしても、MySQLのクライアントの文字コードがデフォルトのUTF-8なので、インサート時に悪さするのがこの現象。

と言うことで、

//MySQLのクライアントの文字コードをujisに設定
mysql_query("SET NAMES ujis") or die("can not SET NAMES ujis");

としてSQL命令を実行すると文字化けが解消されました。

コメント

タイトルとURLをコピーしました