みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PDOでMySQL接続した際の文字化けについて

http://ponk.jp/php/basic/php_mysql

すいません。データベースを初めて勉強中なのですが、上記のサイトに書いてあるように文字をphpで表示させた場合日本語が???に文字化けします。いろいろググってみたのですが解決できず先に進めません・・。

照合順序などはutf8_general_ciとなっていまして、phpの方も<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />とutf-8が指定してありますので問題ないと思います。
考えられる原因というのはどんなものがありますか?




テーブル表
CREATE DATABASE men;
USE men;
CREATE TABLE udon(name TEXT, price INT);
INSERT INTO udon VALUES('たぬきうどん', 340);
INSERT INTO udon VALUES('てんぷらうどん', 440);
INSERT INTO udon VALUES('カレーうどん', 420);
INSERT INTO udon VALUES('うどん定食', 520);


表示プログラム
<table border="1">
<tr><th>名前</th><th>価格</th></tr>
<?php
$pdo = new PDO("mysql:dbname=men", "root");
$st = $pdo->query("SELECT * FROM udon");
while ($row = $st->fetch()) {
$name = htmlspecialchars($row['name']);
$price = htmlspecialchars($row['price']);
echo "<tr><td>$name</td><td>$price 円</td></tr>";
}
?>
</table>

投稿日時 - 2013-07-24 23:09:46

QNo.8190583

すぐに回答ほしいです

質問者が選んだベストアンサー

PDOで接続するときにcharsetを指定するとよいらしい

$pdo = new PDO( 'mysql:host=myhost;dbname=mydb;charset=utf8', 'myname', 'mypass' );.

投稿日時 - 2013-07-25 09:23:09

お礼

ご回答ありがとうございます。おっしゃるように指定しましたら解決しました!

投稿日時 - 2013-07-25 19:56:45

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

$pdo = new PDO("mysql:dbname=men", "root");
$pdo->query("set names utf8;"); // この行を追加する
$st = $pdo->query("SELECT * FROM udon");

取り急ぎの対策といたしましては、
上記のように1行追加してみるといかがでしょうか??


また下記URLにも同様の現象を解決している事例がございましたので、
つけさせていただきました!

http://blog.machacks.net/2013/06/18/pdo%E3%81%A7mysql%E6%8E%A5%E7%B6%9A%E3%81%97%E3%81%9F%E3%82%89%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%81%97%E3%81%9F%E6%99%82%E3%81%AE%E3%83%A1%E3%83%A2/

投稿日時 - 2013-07-25 09:28:48

お礼

すごいです!一発で解決しました!

ありがとうございました!!

投稿日時 - 2013-07-25 19:55:46

あなたにオススメの質問