

**背景**  
元々別サーバーにあったシステムを、新しく別のサーバーへ移管することになりました。

**エクスポート**

[code]

    mysqldump -u root -p DBNAME  --default-character-set=binary > ~/DBNAME.sql 
    
[/code]

**インポート**  
直接コマンドを打ち込めないため、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

以上となります。  
よろしくお願いいたします。


CC BY-SA 3.0
2015-06-04T07:51:49.403
10974
2020-06-22T04:37:30.983
2020-06-22T04:37:30.983
3060
8667
question
php mysql 文字化け
PHP + MySQLでの文字化けが直らない


おそらく自己解決したので回答しておきます。

以下のコードを先頭に付け加えたところ、文字化け無く表示が行えるようになりました。

[code]

    mysql_set_charset('utf8', $con);
    
[/code]

* * *

_この投稿は[@Monon さんが質問本文に追記した内容](https://ja.stackoverflow.com/revisions/10974/2)
を元に、個別の回答として コミュニティwiki として投稿しました。_


CC BY-SA 4.0
2020-06-22T04:37:09.163
67896
2020-06-22T04:37:09.163
3060
10974
answer