PHP + MySQLでの文字化けが直らない
背景
元々別サーバーにあったシステムを、新しく別のサーバーへ移管することになりました。
エクスポート
mysqldump -u root -p DBNAME --default-character-set=binary > ~/DBNAME.sql
インポート
直接コマンドを打ち込めないため、phpMyAdminを使ってインポートしました。
この時、「ファイルの文字セット:」の項目はutf8やsjis、binaryなどを試していますが、結果は変わっておりません。
Perlで試験接続
Perlからデータベースへ接続したところでは、日本語にも文字化けは一切無く、移行したデータが綺麗に読み取れています。UTF8です。
しかし、実システムはPHPのため、あくまで動作確認でした。
PHPで接続
PHPで接続すると、phpMyAdminの時点ですでに文字化けしており、目的のシステムも日本語部分だけ文字化けして治る気配がありません。
試したこと
ネット検索を利用するなどして試したことです。
- エクスポート時に、binaryではなくsjisやutf8、eucなどを試してみました。
- インポート時にも、考えられる文字コードの組み合わせを行いました
- phpMyAdmin上のSQL発行を行っても文字化けが発生するため、「SET NAMES utf8」コマンドを先頭に置き、考えうる文字コードを指定し何度か試した結果、出力結果の文字化けの種類は変化するものの、正常に表示される組み合わせが無い
- データベースのデフォルト文字コードを変更し、再度インポートを試すが結果変わらず
情報
MySQL:5.5.28
phpMyAdmin:3.3.10.5
PHP:PHP 5.4.40
以上となります。
よろしくお願いいたします。
追記
おそらく自己解決いたしましたので追記いたします。
mysql_set_charset('utf8', $con);
以上のコードを先頭に付け加えたところ、文字化け無く表示が行えるようになりました。