個人的なまとめ。

てきとーに何か書きます。

PHPとMySQLで文字化けしてた原因

PHPMySQLを連携させてDBを触ってたんですが,PHPの設定とかApacheの設定とかはしっかりとutf8になってるのに,なぜか日本語でDBにPHP経由で登録をしようとすると,文字化けが起きてました.
MySQLでDBを作った時もちゃんとutf8にしてたし,他の設定も大丈夫なのにおかしいなーと思って,ずっと悩んでました.

色々なサイトを見てると,headerに

header('Content-Type: text/html; charset=UTF-8')

を指定すればいけるとか,

mysql_query('set names utf8');
mb_language("uni");
mb_internal_encoding("utf8");
mb_http_input("auto");
mb_http_output("utf8");

を書けばいける的なサイトばっかりヒットしてました.

全部試したんですけど全然上手く行かなくて,最終的に変更した部分がPDOの所で,

$db = new PDO('mysql:host=localhost;dbname=hogehoge;charset=utf8', $USER, $PASSWORD);

charset=utf8を指定してなかったのが問題だったようです.

とりあえずこれで,DBに書き込む時も文字化けしなくなったし,DBから読み込む時も文字化けしなくなりました.