MySQL接続時に文字コード"utf-8"
を指定したい – だって文字化けするんだもんの巻。
"SET NAMES `utf8`"
は使っちゃダメよと大垣さんがおっしゃってたのでこれは使わない。
代わりに mysql_set_charset('utf8');
を使うらしいのだけどPDOでは使えない模様。
で次のようにして解決しました。
try { $pdo = new PDO($db_dsn,$db_user, $db_password, array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`" ) ); } catch (PDOException $e) { die($e->getMessage()); } |
Google先生にお聞きしてあっちこっちのサイトのコードを試したのでどちらが出典なのか記録を取っておらず不明です、ごめんなさい。
これだったかも
PHP Document
http://php.net/manual/ja/ref.pdo-mysql.php
Davy Defaud氏のコメント。
たった今、PDO+MySQLの文字化けで悩んでいたところでした。
スパッと解決できて大変助かりました!!!
$pdo = new PDO($dsn,$user,$pass,array(
PDO::MYSQL_ATTR_READ_DEFAULT_FILE => ‘パス/my.cnf’,
PDO::MYSQL_ATTR_READ_DEFAULT_GROUP => ‘client’,
PDO::ATTR_EMULATE_PREPARES => false
));
このmy.cnfに設定する方法が無理だったので助かります。
$pdo->query(‘SET NAMES utf8’);
私の環境では、こちらでも出来るようでした。
‘SET NAMES utf8′ はセキュリティ的に問題があると聞いています。
めっちゃ助かりました
この記事を読まれた方はこちらをご覧ください。
http://qiita.com/mpyw/items/b00b72c5c95aac573b71
一応前のコメントのリンク先で細かく解説していますが、正直に申し上げますとこの記事の内容は根底から誤っています。「SET NAMES `utf8`」を「SET CHARACTER SET `utf8`」に変更したところで何も解決しないどころかむしろ悪化します。コメントを見ていただけたならば訂正して頂ければ幸いです。