宜しくお願いします。
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をセットで勉強し始めたばかりのひよっこです。
長くなってしまい、申し訳ありません。どうぞ宜しくお願い致します。
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルに入っているデータと...
-
【PHP】クエリーの実行に失敗し...
-
PHPでCSVをダウンロード/アッ...
-
MySQLのデータを使ってプルダウ...
-
if文で、レコードが無い場合だ...
-
リストから詳細画面に遷移する...
-
mysql_num_rowsを使わず、SQL文...
-
stringaddslashes 半角¥が消える
-
MySQLでデータベースにデータin...
-
実行時エラー3131 FROM 句の構...
-
insert1つの処理でもトランザ...
-
C# で発生したException.Messag...
-
円マークが付加されて保存され...
-
WHILEで取り出しループ中にさら...
-
DB Error: no such field
-
checkboxクリック時、SQLを実行...
-
ファーストサーバのレンタルサ...
-
時刻型にNULLでセットしたい
-
VBAをつかってクエリの情報を抽...
-
SQLインジェクション対策
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DB(MySQL)から複数行のデータを...
-
Resource id #3 をフィールドの...
-
stringaddslashes 半角¥が消える
-
phpのエラーについてです
-
PHP+MySQLでの検索結果の横並び...
-
mysql_query等でレコード数を変...
-
mysqlへのデータ追加について
-
配列に値が入らない
-
PHP+mysqlでSQL文に文字数制限...
-
テーブルに入っているデータと...
-
CSVをダウンロードさせた際、CS...
-
縦に長い<table>でなく横に長い...
-
【PHP】クエリーの実行に失敗し...
-
mysqlからmysqliへの変更点
-
MySQL5のデータを、SQL文を使い...
-
会員登録したらメールが送られ...
-
php+mysql sql文実行について
-
SQL文2つ実行
-
html用とmysql用のエスケープ処...
-
XAMPPで画面が真っ白になります。
おすすめ情報