MySQL+PHPで文字化け

phpMyAdminとかコマンドラインからだとちゃんと日本語も挿入、取り出しが出きて、phpからも適当に実験してたらうまくいったのでSQLiteばかりいじっておりました。それまではphpからもちゃんと日本語で挿入できたりすると思ってたんですが、実際やってみると文字化けを起こしました。

問題はMySQL4.1以上(MySQL5とか)の場合で、phpからいじる場合などです。なんとmy.iniの設定はphpでは読み込まれず、いくらMySQLのほうで文字コードを設定しても無視されるのでした。というわけで、MySQLのほうの文字コードUTF-8にしている場合はphpからSQLを発行する前に、必ずSET NAMESで文字コードを設定する必要があります。

mysql_query("SET NAMES utf8");

phpMyAdminはちゃんとこの処理をやっていたわけですね。MySQL4.0系だとこういうのは起こらないそうなのでこれでもうまくいかない場合は4.0を使ってみましょう。

参考ページ:http://www.mysql.gr.jp/frame/modules/bwiki/index.php?FAQ#content_1_52