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命令を実行すると文字化けが解消されました。
コメント