Hatena::ブログ(Diary)

プログラムメモ このページをアンテナに追加 RSSフィード

2007-11-27

[]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であること

mysqlutf-8であること(Adminなどで確認)

・フォームデータの場合はHTML

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

を入れること。

cbacba 2010/01/14 11:25 同様の問題が一発解決しましたありがとうございます

nekoneko 2012/01/20 23:05 助かりました。
有り難うございました。

taketake 2012/11/25 16:22 ありがとうございます。
UTF8で格納したDBから読み込む際も、二行目を付け足すことで
解決しました。

To_aru_UserTo_aru_User 2013/08/26 23:46 原則的に「SET NAMES」は使わないように。
http://qiita.com/mpyw/items/b00b72c5c95aac573b71

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close