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

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

解決済みの質問

MySQLへの吐き出し日本語が文字化けする

自分なりに調べてみたのですが,わからないのでお尋ねいたします。

phpmyadminからmysqlに直接日本語を打ち込むと,ちゃんと日本語が表示されます(phpmyadmin内でデータを再度呼び出した時)。が,phpのプログラムからmysqlにデータをinsertし,phpmyadminでデータを参照すると日本語部分のみ文字化けします。
同じプログラムをアイルサーバで動かしていて,そこではうまくいっているのですが,ファーストサーバでうまくいきません。
ファーストサーバの文字コードはEUC-JPですが,phpもプログラムもEUCで書いています。メール送信部分のプログラムは,ちゃんと日本語が出ています。
日本語文字化けの場合に,チェックするべきところは,どういうところがありますでしょうか?。多分,phpというよりはMYSQL側の問題のような気がしないでもないのですが・・・。

投稿日時 - 2007-08-03 16:50:24

QNo.3224453

すぐに回答ほしいです

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

INSERT 前に以下のようにして "SET NAMES 文字コード" で MySQL に文字コードを指定してみてください。

mysql_query("SET NAMES EUC-JP");

phpMyAdmin は起動時に文字コードを指定しているのでphpMyAdminだと正常に処理されるのだとおもいます。

投稿日時 - 2007-08-03 18:33:19

補足

とにかく簡単なコードで確かめてみようと,下記のようなコードを暫定的に作成して確かめてみました。

--------------
$name="やまだはなこ";
//データ登録
mysql_query("set names euc-jp");
$sql = "insert into TUI_usertest(k_name) values('$name')";
--------------

が,結果はやはりk_nameが化けています。
¤Ï¤Þ¤À¤Ê¤ª¤?¤Ã¤Á
このような化け方です。

mysql_query("set names euc-jp");
の使い方がおかしいでしょうか?。

投稿日時 - 2007-08-06 19:35:04

お礼

mysql_query("set names ujis");

これで解決しました。
もう諦めて手作業にしようかと思いながらやっていた最後のトライ&エラーでした。

皆様,ありがとうございました。

投稿日時 - 2007-08-07 13:52:34

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

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

回答(3)

ANo.3

phpmyadminのログイン時EUC-JPでログインしてないとか?
phpファイル保存時SJIS形式で保存されているとか?

投稿日時 - 2007-08-04 05:18:30

お礼

ma2shinさん、ありがとうございます。
PHPファイルの保存はEUCになっています。

>phpmyadminのログイン時EUC-JPでログインしてないとか?

これがよくわからないのですが、ログインする時にEUC-JPを選ぶような入力ボックスはないのですが・・・何か私、カンチガイしているでしょうか?。

ちなみに、phpMyAdminを開いて、左フレームのプルダウンメニューが「データベース」という状態での右フレームの状態は、以下のようになっています。

MySQL の文字セット: UTF-8 Unicode (utf8)
MySQL 接続照合順序 utf8-unicode-ci

また、その右に表示されているphpMyAdminに関する情報は
phpMyAdmin - 2.9.0.2
言語 - Language 日本語japanese
です。

投稿日時 - 2007-08-05 15:16:45

ANo.1

どちらかというとPHP側の問題のような気もします。

インサートする日本語文字列にmb_detect_encodingをかけて文字コードを調べてみてはいかがでしょう。

PHPMyAdminからインサートする分には問題ないということですが、念のため確認もかねて、PHPMyAdminの参照順序がLatinなどになっていないかも確認するとよいかもです。(EUCだとujisだったかと)

投稿日時 - 2007-08-03 17:13:57

お礼

ありがとうございます。
mb_detect_encodingをかけてみましたが,EUC-JPでした。
あと,参照順序については,Latin1なんとやらになっていたので,この部分も,ujisに修正して実行してみましたが,結果は変わりませんでした。
phpもmysql自体も初心者に近いので,なにか基本的なことを見落としているのかもしれません・・・。

投稿日時 - 2007-08-03 17:36:44

あなたにオススメの質問