PDOでmysqlに日本語つっこんだら文字化けして困ったけど解決した
PDOでutf-8の日本語入力データ(フォームデータ)を入れたら文字化けしてた(Mysql Query Borwser上で)。
同じくutf-8設定のRubyデータが文字化けしてないので、mysql内での設定は問題ないはず。
いろいろやってためしたところ、次の方法で一発解決。
$pdo = new PDO("mysql:host=localhost; dbname=phptest", "root", "pass"); $stmt = $pdo -> query("SET NAMES utf8;"); $stmt = $pdo->prepare("insert into hoge(name, count)values(:name, :count)"); :
$stmt = $pdo -> query("SET NAMES utf8;");が重要。php.iniにcharset関係の設定は不要でした。
念のため、その他しておいた設定。
・phpファイル自体がutf-8であること
・mysqlがutf-8であること(Adminなどで確認)
・フォームデータの場合はHTMLに
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
を入れること。