プロが教えるわが家の防犯対策術!

phpのmysql_queryでデータベースから日本語文字列を取得すると
それが全て?マークになってしまいます。半角英数字はちゃんと表示されます。
日本語文字列もちゃんと表示させるための解決方法を教えて頂けないでしょうか。

Apache/2.4.1 (Win32) PHP/5.2.17
MySQL Server 5.0
Client API version 5.0.51a
localhostとして使用しています。

文字コードはphpがutf-8です。
データベースは、utf8_general_ci
Variable_name(Value)
---------------------
character_set_client(utf8)
character_set_connection(utf8)
character_set_database(utf8)
character_set_filesystem(binary)
character_set_results(utf8)
character_set_server(utf8)
character_set_system(utf8)


cookingデータベースのfriendsテーブルの中身
-----------------------------------------------------
no(主キー) | name  |  birth  |  email
0       test   1986-06-10  mail1
1       るん   2000-01-27  mail2
3       まこ   1987-03-30  mail3
4       春風   1998-06-08  mail4
5       まめ   1990-11-11  mail5
6       かおりん 1999-07-03  mail6
-----------------------------------------------------

下記コードを実行すると、

0test1986-06-10mail1
1??2000-01-27bbbb@mail2
3??1987-03-30cccc@mail3
4??1998-06-08dddd@mail4
5??1990-11-11eeee@mail5
6????1999-07-03mail6

のようにブラウザに表示されてしまいます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
//--------------------------------
// ■ サーバに接続
//--------------------------------
$my_Con = mysql_connect("localhost","root","pw");
if($my_Con == false){
die("接続に失敗しました。");
}

//--------------------------------
// ■ データベースに接続
//--------------------------------
if(!mysql_select_db("cooking",$my_Con)){
die("cookingデータベースの選択に失敗しました。");
}

//--------------------------------
// ■ テーブルからのデータを読む
//--------------------------------
$my_Row = mysql_query("SELECT * FROM friends",$my_Con);
if(!$my_Row){
die(mysql_error());
}
while($row = mysql_fetch_array($my_Row)){
echo $row[no]; //番号
echo $row[name]; //名前
echo $row[birth]; //誕生日
echo $row[email]; //メールアドレス
echo "<br />";
}
?>
</body>
</html>

このQ&Aに関連する最新のQ&A

A 回答 (1件)

可能性がいくつかありそうですが、下記の情報で解決しないでしょうか?


http://kennyqi.com/archives/61.html
    • good
    • 0
この回答へのお礼

mysql_set_charset('utf8');で再設定することで実現できました。
とても助かりました。ありがとうございます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<?php
//--------------------------------
// ■ サーバに接続
//--------------------------------
$my_Con = mysql_connect("localhost","root","pw");
if($my_Con == false){
die("接続に失敗しました。");
}

//--------------------------------
// ■ データベースに接続
//--------------------------------
if(!mysql_select_db("cooking",$my_Con)){
die("cookingデータベースの選択に失敗しました。");
}

//--------------------------------
// ■ テーブルからのデータを読む
//--------------------------------

//クライアント側とサーバ側の文字コードの両方を設定
mysql_set_charset('utf8');

$my_Row = mysql_query("SELECT * FROM friends",$my_Con);
if(!$my_Row){
die(mysql_error());
}
while($row = mysql_fetch_array($my_Row)){
echo $row[no]; //番号
echo $row[name]; //名前
echo $row[birth]; //誕生日
echo $row[email]; //メールアドレス
echo "<br />";
}
?>
</body>
</html>

お礼日時:2012/05/04 01:13

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング