- ベストアンサー
MySQLへの吐き出し日本語が文字化けする
自分なりに調べてみたのですが,わからないのでお尋ねいたします。 phpmyadminからmysqlに直接日本語を打ち込むと,ちゃんと日本語が表示されます(phpmyadmin内でデータを再度呼び出した時)。が,phpのプログラムからmysqlにデータをinsertし,phpmyadminでデータを参照すると日本語部分のみ文字化けします。 同じプログラムをアイルサーバで動かしていて,そこではうまくいっているのですが,ファーストサーバでうまくいきません。 ファーストサーバの文字コードはEUC-JPですが,phpもプログラムもEUCで書いています。メール送信部分のプログラムは,ちゃんと日本語が出ています。 日本語文字化けの場合に,チェックするべきところは,どういうところがありますでしょうか?。多分,phpというよりはMYSQL側の問題のような気がしないでもないのですが・・・。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
INSERT 前に以下のようにして "SET NAMES 文字コード" で MySQL に文字コードを指定してみてください。 mysql_query("SET NAMES EUC-JP"); phpMyAdmin は起動時に文字コードを指定しているのでphpMyAdminだと正常に処理されるのだとおもいます。
その他の回答 (2)
- ma2shin
- ベストアンサー率41% (69/167)
phpmyadminのログイン時EUC-JPでログインしてないとか? phpファイル保存時SJIS形式で保存されているとか?
お礼
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 です。
- nyalio
- ベストアンサー率58% (20/34)
どちらかというとPHP側の問題のような気もします。 インサートする日本語文字列にmb_detect_encodingをかけて文字コードを調べてみてはいかがでしょう。 PHPMyAdminからインサートする分には問題ないということですが、念のため確認もかねて、PHPMyAdminの参照順序がLatinなどになっていないかも確認するとよいかもです。(EUCだとujisだったかと)
お礼
ありがとうございます。 mb_detect_encodingをかけてみましたが,EUC-JPでした。 あと,参照順序については,Latin1なんとやらになっていたので,この部分も,ujisに修正して実行してみましたが,結果は変わりませんでした。 phpもmysql自体も初心者に近いので,なにか基本的なことを見落としているのかもしれません・・・。
お礼
mysql_query("set names ujis"); これで解決しました。 もう諦めて手作業にしようかと思いながらやっていた最後のトライ&エラーでした。 皆様,ありがとうございました。
補足
とにかく簡単なコードで確かめてみようと,下記のようなコードを暫定的に作成して確かめてみました。 -------------- $name="やまだはなこ"; //データ登録 mysql_query("set names euc-jp"); $sql = "insert into TUI_usertest(k_name) values('$name')"; -------------- が,結果はやはりk_nameが化けています。 ¤Ï¤Þ¤À¤Ê¤ª¤?¤Ã¤Á このような化け方です。 mysql_query("set names euc-jp"); の使い方がおかしいでしょうか?。