PHP と Mysql の連携時に発生する漢字の文字化け
宜しくお願いします。
1.PHPプログラムからMYSQLにデータを書き込んだ際、結果をコマンドプロンプトで見ると漢字が文字化けしてしまいます。
2.また、コマンドプロンプトから直接同じ命令を打ち込んだ場合は、漢字の値だけがテーブルに挿入(insert)されません。または、結果は挿入されているが、表示されていないだけだという可能性もあります。
しかし、結果をphpMyAdminから見ると、前者は期待通りの値、つまり漢字が挿入されているようです。後者は、phpMyAdminから見ても相変わらず、何も挿入されていないように見えます。
文字コード設定は、utf8にしました(画像添付)。
この問題にはとても手こずっています。昨日一日をこの問題のために費やし、今日も潰れそうです。しかし、どうしても途中放棄したくありませんので、お力を貸し頂けないでしょうか。
説明不足な点がございましたら、どんどん補足説明を要求してください。以下に保持している情報・状況をできるだけ詳しく書かせていただきました。重複する部分もあるかもしれませんが、その点はお許しください。ご回答をお願いします・・・。
<<PHPプログラムソース>>
このプログラムは、phpユーザ,passパスワードでlocalhostにアクセスし、php_sample_databaseデータベースに接続後、カラム(id<primary key>)と(name)からなるテーブルを作成します。その後、作成したテーブルに漢字を含む値を入力します。今回発生している問題は、この処理に際して生じていると思われる「漢字の文字化け」です。
<?php
$createGender = <<<DDL
create table gender
(id int primary key,
name varchar(32)
)
DDL;
$conn = mysql_connect("localhost","root","pass");
mysql_query("set names 'utf8'",$conn);
echo "SET NAMES utf8★" . mysql_client_encoding(). "<br>";
mysql_set_charset("utf8",$conn);
echo "mysql_set_charset★" . mysql_client_encoding() . "<br>";
#上は、クライアント文字コードの実験
mysql_select_db("php_sample_database",$conn);
mysql_query($createGender,$conn);
mysql_query("insert into gender (id, name) values (1,'男性')",$conn);
mysql_query("insert into gender (id, name) values (2,'女性')",$conn);
mysql_close($conn);
echo '初期化終了<br>';
?>
<<PHPプログラムの実行結果―ブラウザ画面>>
SET NAMES utf8★latin1
mysql_set_charset★utf8
初期化終了
※ブラウザは正常に表示されます。文字化けはありません。
<<PHPプログラムの実行結果―コマンドプロンプト画面>>
※詳細は、画像を添付させていただきます。
---------
id |name
---------
1 |漢字の文字化け
2 |漢字の文字化け
---------
<<PHPプログラムの実行結果―phpMyAdmin画面>>
画像の左側に添付させていただきました。
<<コマンドプロンプトで実行した結果>>
※PHPと全く同じ命令のうち、テーブル作成に関する部分のみをコマンドプロンプトから入力した結果・・・下図のようにname欄が空白になりました。つまり、漢字部分だけが表示されなかったことになります。
---------
id |name
---------
1 |
2 |
---------
<<コマンドプロンプトで実行した結果―phpMyAdmin画面>>
画像の左側に添付させていただきました。
<<使用している環境・バージョン情報>>
OS:Windows vista Home premium
xampp:1.6.8
apache:2.2.9
mysql:5.0.67-community-nt
phpmyadmin:2.11.9.2
php:5.2.6
申し遅れましたが、私は、PHPとMYSQLをセットで勉強し始めたばかりのひよっこです。
長くなってしまい、申し訳ありません。どうぞ宜しくお願い致します。
補足
追加しましたが、 表示は、変わりませんでした。 -の部分を_にもしましたが変わりませんでした。