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

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

解決済みの質問

データベースが文字化けしてしまいます

過去の相談を見ながらいろいろとやりましたがもうお手上げ状態です。
だれか助けてください。

PHPパーフェクト(技術評論社)を見ながらPHPの勉強をしている初心者です。
下記のようなPHPコードを書いてデータベースに保存しようとしているんですが、
phpmyadminで確認するとどうしても「文字化け」してしまいます。

<?php
$link = mysql_connect("localhost", "■", "■");
if(!$link){
die("データベースに接続できません:".mysql_error());
}

mysql_select_db("oneline_bbs", $link);
$errors = array();

if($_SERVER['REQUEST_METHOD']==="POST"){
$name = null;

if(!isset($_POST["name"])||!strlen($_POST["name"])){
$errors['name'] = "名前を入力してください";
}else if(strlen($_POST["name"]) > 40){
$errors['name'] = "名前は40文字以内で入力してください";
}else{
$name = $_POST["name"];
}

$comment = null;

if(!isset($_POST["comment"])||!strlen($_POST["comment"])){
$errors["comment"] = "ひとことを入力してください";
}else if(strlen($_POST["comment"]) > 200){
$errors["comment"] = "ひとことは200文字以内で入力してください";
}else{
$comment = $_POST["comment"];
}

if(count($errors) === 0){
$sql = "INSERT INTO `post` (`name`,`comment`,`created_at`) VALUES ('"
.mysql_real_escape_string($name) . "','"
.mysql_real_escape_string($comment) . "','"
.date('y-m-d H:i:s') . "')";

mysql_query($sql, $link);
}
}





?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
<title>ひとことけいじばん</title>
</head>

<body>
<form action="bbs.php" method="post">


名前:<input type="text" name="name" /><br />
ひとこと:<input type="text" name="comment" size="60" /><br />
<input type="submit" name="submit" value="送信" />


</form>



</body>
</html>


データベースは
CREATE DATABASE 'oneline_bbs' DEFAULT CHARACTER SET utf8;
・・・
と入力して作りました。

過去の相談事例からphp.iniなどもいじって見ましたが、
どうにもなりません。

XAMPP 1.7.3
windowsXP
DreamweaverCS5.5
ブラウザChormeを使用しています。

だれか詳しい方よろしくお願いします。

投稿日時 - 2012-01-23 01:07:22

QNo.7261042

すぐに回答ほしいです

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

<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
ブラウザのコード系はeuc-jp
CREATE DATABASE 'oneline_bbs' DEFAULT CHARACTER SET utf8;
データベースのコード系はutf8
データベースと接続するミドルウェアが自動でコード変換してくれないから文字化けしているのでは?

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
で試してみたら?
(meta文では、ユニコードを指定したければutf8じゃなくUTF-8だったと思う。・・・同じコード系です)

投稿日時 - 2012-01-23 01:36:57

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

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

回答(2)

ANo.2

Webページはどうしてもeuc-jpじゃないとダメなのでしょうか?
No.1様の回答のように、UTF-8で統一するのが最もスマートかと思いますが...生成するWebページはどうしてもeuc-jpでなければ、ということであればmysql_connectの後にmysql_set_charset("ujis", $link)でいかがでしょう?

※mysql_set_charsetはPHP5.2.3以上でないと使えません。
※mysqlで"SET NAMES"や"SET CLIENT_ENCODING"を行う方法はセキュリティの問題があるため推奨されていません。

投稿日時 - 2012-01-23 03:51:19

あなたにオススメの質問