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

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

解決済みの質問

PHP+MySQLで文字化けします

PHPでMySQLに接続して以下のように
テーブルの作成・そのテーブルにInsertをすると文字化けします。

PHPサーバーの文字コードはEUC-JP、MySQLの文字コードはlatin1です。
PHPのバージョンは5.04でMySQLのバージョンは4.1.20です。
無料レンタルサーバーなので詳細な設定は変更できません。


<?php
// データベースに接続し、選択する

mb_language('Japanese');

mb_internal_encoding('UTF-8');

mb_http_output('UTF-8');

$link = mysql_connect('localhost',"user","password")
or die('Could not connect: ' . mysql_error());
echo 'Connected successfully';

mysql_select_db('user') or die('Could not select database');

mysql_query("SET NAMES UTF-8",$link);
// SQL クエリを実行する
$name = 'test';

$query = "CREATE TABLE IF NOT EXISTS `$name` (
`id` varchar(50) primary key,
`name` varchar(50),
`pw` varchar(50)
);";

$result = mysql_query($query) or die('Query failed: ' . mysql_error());

$query = "INSERT INTO $name (id, name) VALUES('test', 'テスト');";

$mojicode = mb_detect_encoding($query);

$query = mb_convert_encoding($query, "UTF-8", "$mojicode");

$result = mysql_query($query) or die('Query failed: ' . mysql_error());

// HTML に結果を出力する
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";

// 結果セットを開放する
mysql_free_result($result);

// 接続を閉じる
mysql_close($link);
?>

まだまだPHP、MySQL共に技術が未熟なため
説明不足な部分が多々あるかと思いますがご教授お願いします。

投稿日時 - 2011-03-12 12:20:41

QNo.6587867

困ってます

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

dbで日本語文字を使う場合すこし大変ですが、db内のmysqlのテーブルをUTF-8にする必要があるようです。
その後は、createのたびに utf-8を指定してあげる必要がありそうですね。

既存データの文字コード変換はとても説明しきれないので 参照サイトをご覧ください。
http://kzworks.at.webry.info/200903/article_14.html

投稿日時 - 2011-03-12 14:45:22

お礼

ありがとうございます
テーブルを作成時にutf-8に変更したら
日本語が入力できるようになりました。

投稿日時 - 2011-03-12 16:11:21

ANo.1

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

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

回答(1)

あなたにオススメの質問