• 締切済み

PHPとMySQLの文字化けに関して

PHPとMySQLの文字化けに関して PHPとMySQLを利用したホームページ作成の勉強をしている初心者です。 現在、レンタルサーバーをお借りして、作成したページを表示させようとしておりますが、 文字化けで悩んでおり、解決策をご教授いただきたいと思います。 まず症状についてですが、phpMyAdminを利用してデータを挿入すると、 phpMyAdminでは文字化けしませんが、作成したホームページでは文字化けが発生します。 (???が続くような文字化けです。) 一方、データ挿入用のページを作成し、そこから挿入を行うと、 phpMyAdminでは文字化けが発生しますが、 ホームページ上では一応日本語表示されます。 (phpMyAdminでの文字化けは、こんな感じです。 ã?TMã??ã?¬ã?¢ã??ã?? また、上手く表示できない物もあります。) 希望としては、全ての文字コードをutf-8に統一させたいのですが、 データベース関連の文字コードの設定が出来ず、解決が出来ません。 以下、現在の状況と、素人ながら試してみた点などについて記載します。 (情報の不備などございましたら、お手数ですがご指摘ください。) --------------------------------------------------------------- ■phpinfo関連 □PHP Version 5.1.6 □MySQL Client API version 5.0.82sp1 □default_charset Local Value UTF-8 Master Value no value ■phpMyAdmin関連 □phpMyAdmin Version 2.11.10 □status の結果 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'status' at line 1 □SHOW VARIABLES LIKE 'char%'; の結果 Variable_name Value character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server latin1 character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/ □set character_set_server = utf8; の結果 SQL は正常に実行されました (クエリの実行時間 0.0002 秒) と出ますが、変更されません。 □phpMyAdmin上のデータベースの表 データベース 照合順序 DB1 utf8_general_ci DB2 utf8_general_ci information_schema utf8_general_ci 合計: 3 latin1_swedish_ci ■.htaccess関連 .htaccessを設定してFFFTPでアップロードしても、表示されません。 また、別名ファイルでアップし、アップロード先で名称変更すると、消えてしまいます。 ■その他 ファイル作成にはTeraPadを利用し、 UTF-8Nにて保存しております。 ホームページのメタタグには、 <meta http-equiv="content-type" content="text/html; charset=utf-8" /> というものを設定しております。 php.iniやmy.cnf の設定で解決するとの情報もあり、 当該ファイルを探してみましたが、見つけることができませんでした。 --------------------------------------------------------------- なお、レンタルサーバーでの利用では、 .htaccessやphp.ini、my.cnfの設定が出来ない場合もあるそうですので、 そのような場合、どのような解決法があるのでしょうか? どうぞよろしくお願いいたします。

みんなの回答

  • taisei64
  • ベストアンサー率33% (1/3)
回答No.4

phpでMySQLに接続したあとに $sqlf = "SET NAMES utf8"; $result = mysql_query($sqlf); を記入する。 phpMyAdminにutf-8でログイン後データベース、テーブル等も「操作」のタブから 照合順序を「utf8_unicode_ci」に設定する。 あとHTMLで <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> を記入する。 自分はこれでうまくいきました。

すると、全ての回答が全文表示されます。
  • memphis
  • ベストアンサー率40% (975/2395)
回答No.3

No.1です。 お礼に書かれているのは全て違います。 設定&バージョンによっても違いますが、添付画面のようにphpMyAdminへログインする時に 指定する文字コードです。 phpMyAdminで使う文字コードがUTF-8以外になっているから、phpMyAdmin以外は文字化けになるのでしょう。

noname#232712
質問者

お礼

本当に色々と有難うございます。 わざわざわかりやすく図まで載せていただき、 初心者には大変助かります。 さて、ご指摘の点についてですが、今、確認したところ、 日本語 Japanese (utf-8)とはなっておりましたが、 最初にデータベースを作成したときに、 この設定で作っていたかが定かではありません。 今一度データベースを作り直し、 今度は日本語 Japanese (utf-8)であることを確認してから 再度挑戦してみたいと思います。 有難うございました。

すると、全ての回答が全文表示されます。
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

ん?と思ったのは、↓ここですかね。 > 合計: 3 latin1_swedish_ci あと スクリプトの方で DBにコネクトしたときに、↓を投げてやると 幸せになれるかもしれません。 mysql_query("SET CHARACTER SET UTF8"); 本筋とは関係ないですけど、勉強に使うだけなら XAMMPでいいんじゃないかとも思ったりもしました。

noname#232712
質問者

お礼

回答有難うございます。 mysql_query("SET CHARACTER SET UTF8"); を入れてみましたが、せっかく教えていただいたのに、 これまで表示されていた日本語も化けてしまいました。 おそらく私の設定したデータベースの方に問題があり、 教えていただいた方法が上手くいかないのではないかと思います。 また、 > 合計: 3 latin1_swedish_ci の設定についてですが、直し方がどうしてもわからず、 気になっていたので、表だけ記載させていただきました。 それから、XAMMPでも、とのことですが、 いずれレンタルサーバーでホームページの運用もしてみたい考えており、 その際、やはり同様の問題が出てくるのではないかと、 文字化けの問題を解決したいと思っております。 他のレンタルサーバーについては全く存じ上げないのですが、 通常、htaccessやphp.ini、my.cnfなどの設定が出来るのでしょうか? 質問が色々になってしまい、申し訳ありません。

すると、全ての回答が全文表示されます。
  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

症状から考えると、phpMyAdminの文字コードがUTF-8以外になっているのが原因だと思います。 文字コードを良く確認してください。

noname#232712
質問者

お礼

ご回答有難うございます。 「UTF-8以外になっているのが原因だと思います。」 というのは、 character_set_server latin1 の部分か、 合計: 3 latin1_swedish_ci の部分のいずれかだと思いますが、 character_set_server latin1 の部分に対しては、 set character_set_server = utf8; を行っても変化が見られませんでした。 また、 合計: 3 latin1_swedish_ci につきましては、phpMyAdmin上でどの様に設定するかわからず、 もし方法をご存知の方がいらっしゃったら教えていただきたいと、 現状として表を載せさせていただきました。 .htaccessやphp.ini、my.cnfでの設定が出来ない場合には、 なかなか難しいのでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A