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

解決済みの質問

phpMyadminの文字化けについて

PHPでINSERTしたものをphpMyadminで確認すると
日本語が文字化けしています。
コマンドプロンプトでテーブルを見てみると文字化けは起こっていません。どこを変えればいいのでしょうか?

いろんなサイトを参考にmy.iniを直してみてもだめでした。
----- my.ini ------
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
skip-character-set-client-handshake

[mysqldump]
quick
max_allowed_packet = 16M
default-character-set = utf8

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set = utf8

----- phpMyadmin -----
テーブルの照合順序
utf8_general_ci

mysql> \s

Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1


バージョンは以下のとおりです。
XAMPP 1.7.1
MySQL 5.1.33
PHP 5.2.9
phpMyadmin

投稿日時 - 2009-10-26 16:23:46

QNo.5398239

すぐに回答ほしいです

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

文字コードは UTF-8 でいいのでしょうか。

PHP で INSERT したものを phpMyAdmin で正しく表示する事はできそうですが、コマンドプロンプトでは、たぶん、シフトJISしか表示できないと思うので、こちらは文字化けしてしまいます。

今、XAMPP 1.7.2 で試してみたのですが、設定は何も変更しないで、こんな感じのプログラムを実行してみると、PHP で実行したブラウザ内でも、phpMyAdmin でも文字化けしませんでした。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
$mysql = mysql_connect("localhost","root","");
mysql_set_charset("utf8",$mysql);
mysql_select_db("db_utf8",$mysql);
$sql = "insert into tb1 (memo) values ('あいうえお')";
$query = mysql_query($sql,$mysql);
$sql = "select memo from tb1";
$query = mysql_query($sql,$mysql);
while ($row = mysql_fetch_assoc($query)){
echo $row["memo"];
}
mysql_close($mysql);
?>

ソース中、
「db_utf8」はデータベース名、
「tb1」はテーブル名、
「memo」は項目名で照合順序は「utf8_general_ci」です。

注意点は、
mysql_set_charset("utf8",$mysql);
と、ソースを保存する時の文字コードが UTF-8 である事です。
もしかすると、今のプログラムはシフトJISで保存されているのではないでしょうか。

これですと、新しく追加するデータは問題ありませんが、今、すでにあるデータについては、保存されているデータが UTF-8 ではない可能性があるので PHP で読み込んでも文字化けを起こすと思います。
表示の際にコード変換すればいいのかも知れませんが、新しいデータとの整合性が失われます。

投稿日時 - 2009-10-27 15:55:35

ANo.1

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

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

回答(1)

あなたにオススメの質問