• ベストアンサー

MySQL5で文字化け…

PHP5とMySQL5を使っているのですが、ブラウザでDBから取得したデータを見ると、全て?????になってしまいます。ブラウザではEUC-JPで表示していますが、MySQLの文字セットがUTF-8になっているせいでしょうか?レンタルサーバなのでMySQLの文字セットは変えられないといわれました。 mb_string_encodingも試しましたがだめでした。 ほかに設定方法はないでしょうか? どなたか対応策教えてください。よろしくお願いします。

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

  • ベストアンサー
回答No.1

MySQL5なら、データベースやテーブル単位に文字コードが変えられます。CREATEするときに設定すればOKです。 MySQLの文字コードがUTF-8でも、 データベースがEUC_JPなら、EUC_JPの文字列を ぶっこめます。 また、PHPで、MySQLとEUC_JPでお話するときは、 SELECT するまえに、 SET NAMES ujis; というコマンドを、SELECT文 と同じ要領で、mysql_query()で実行すればよいです。

dalianse
質問者

補足

SELECT の前にSET NAMES ujisで解決しました。ありがとうございました。が、 ふとUPDATEとかINSERTのときは大丈夫なんだろうかと思ったのですが、特に何も気にせずに、例えばフォームからの日本語とか入れてしまって問題ないですか?

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

その他の回答 (1)

回答No.2

もちろん、UPDATE とか、INSERTとかのときも必要です。 私は、データソースや、MySQLに接続する処理は、一つのファイルにまとめて、MySQLを使うページからは、そのファイルをincludeしていますが、そこに一緒に SET NAMES ujis; も書いてあります。 ただ、毎回SQLを走らせるたびごとに必要というわけではなく、コネクションを張っているあいだは、有効なので、1ファイル(他のページをinculudeしていればそれらを全部あわせた"1ページ")の先頭に一回実行されればOKと思います。

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