![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
宜しくお願いします。
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をセットで勉強し始めたばかりのひよっこです。
長くなってしまい、申し訳ありません。どうぞ宜しくお願い致します。
![「PHP と Mysql の連携時に発生す」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/a/15154167_5497bd9253ef2/M.jpg)
No.1ベストアンサー
- 回答日時:
コマンドプロンプトの文字コードは、デフォルトでシフトJISですから、
MySQLの文字コードがUTF-8で設定されている場合に、
コマンドプロンプトからアクセスすれば当然文字化けします。
コマンドプロンプトの文字コードの設定を換えれば文字化けは解消されると思います。
http://fdays.blogspot.com/2008/01/windows.html
早速ご回答いただき、有難うございます。
確かに文字の雰囲気は変わったのですが・・・残念ながら、再度テーブルを作成し直しても文字化け症状は改善されませんでした。
※文字化けの内容は、変わりました。最初にご相談させていただいた時の状態は、漢字とカタカナが混じったような文体でした。しかし文字コードを変更した今の文字化けの状態は、神秘的なギリシア文字のような雰囲気です・・・。
No.2
- 回答日時:
私も文字コードのトラブルに毎回なやまされます・・・
OSのキャラクタセット、MySQLデフォルトのキャラクタセット、テーブルのキャラクタセット、MySQLコネクションのキャラクタセット、PHPのキャラクタセット、webサーバのデフォルトキャラクタセット、htmlソースのキャラクタセット、htmlタグのキャラクタセット、ブラウザのキャラクタセットなど・・・・
これらをすべて意識していないと、この場合は出るけどこれだけ出ないとか、mb_convert_encodingの指定をSJISとUTF8を出る方に調整するとかカオスに陥ります。
Linuxなどの知識があれば、VMwareServerで開発用のLinuxGuestを立ち上げてすべてUTF8で統一してしまうのがお勧めです。
あとはMySQLのサイトでMySQL Administratorを使ってデータベースのキャラクタセットを調べたり、MySQL Query Browserで表示できるか確認するのがよいです、phpMyAdmin等は上に列挙した項目に左右されてしまうので自分の環境ならうまくいく事も多く原因を探るのに邪魔になることもありますよ。
知り合いは動けば良いタイプで、同じプロジェクトでもソースのキャラクタセットが異なっていたり、mb_convert_encodingとかset names をその場その場で使い分けているので、改造の度にどこかが文字化けしたりしてとても苦労しています、統一すればと言っても「今更めんどくさい」と言うのですが、私からすれば改造したら全体を確認する方が面倒だとおもうんですけどね。
アドバイスいただき、有難うございます。
コマンドプロンプト側だけで文字化けしていて、プログラムからデータベースへの値の書き込みは成功しているようです。今回の件は、コマンドプロンプトを使った開発がやりづらくなりますが、無視してもいい程度の問題なのでしょうか・・・?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのエラーについてです
-
mysql_query等でレコード数を変...
-
stringaddslashes 半角¥が消える
-
リストから詳細画面に遷移する...
-
複数のSQLを合体させる方法
-
SQL文2つ実行
-
VBに関するエラー
-
XAMMPが起動しません。
-
MySQLでデータベースにデータin...
-
VBAをつかってクエリの情報を抽...
-
実行時エラー3131 FROM 句の構...
-
PHPで[]の使い方について
-
ResultSetインターフェイスでの...
-
php テーブルを作れない
-
phpでmysqlを使ってデータベー...
-
<VB.NET>INSERT文でDBにデータ...
-
SQL文が実行できません
-
phpで複数の検索語を検索対象に...
-
Pro*Cの構文エラー
-
insert1つの処理でもトランザ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpのエラーについてです
-
テーブルに入っているデータと...
-
sqlから多次元配列に要素を格納...
-
PHPで絞り込み検索結果の件数を...
-
MySQLのデータを使ってプルダウ...
-
XAMMPが起動しません。
-
mysql_fetch_objectのエラー
-
mysql_resultのエラー
-
CSVをダウンロードさせた際、CS...
-
stringaddslashes 半角¥が消える
-
「mysqlclient」の事が分からな...
-
XAMPPで画面が真っ白になります。
-
会員登録したらメールが送られ...
-
PHP+mysqlでSQL文に文字数制限...
-
変数同士の引き算が出来ない
-
連想二次元配列のUNIXTIMEでの...
-
PHP/MySQL SQLエラーについて。
-
PHPでMySQLのレコードを削除したい
-
すいません。
-
インクルードによる不具合
おすすめ情報