- ベストアンサー
MySQL5で文字化け…
PHP5とMySQL5を使っているのですが、ブラウザでDBから取得したデータを見ると、全て?????になってしまいます。ブラウザではEUC-JPで表示していますが、MySQLの文字セットがUTF-8になっているせいでしょうか?レンタルサーバなのでMySQLの文字セットは変えられないといわれました。 mb_string_encodingも試しましたがだめでした。 ほかに設定方法はないでしょうか? どなたか対応策教えてください。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
MySQL5なら、データベースやテーブル単位に文字コードが変えられます。CREATEするときに設定すればOKです。 MySQLの文字コードがUTF-8でも、 データベースがEUC_JPなら、EUC_JPの文字列を ぶっこめます。 また、PHPで、MySQLとEUC_JPでお話するときは、 SELECT するまえに、 SET NAMES ujis; というコマンドを、SELECT文 と同じ要領で、mysql_query()で実行すればよいです。
その他の回答 (1)
- copymaster
- ベストアンサー率81% (83/102)
回答No.2
もちろん、UPDATE とか、INSERTとかのときも必要です。 私は、データソースや、MySQLに接続する処理は、一つのファイルにまとめて、MySQLを使うページからは、そのファイルをincludeしていますが、そこに一緒に SET NAMES ujis; も書いてあります。 ただ、毎回SQLを走らせるたびごとに必要というわけではなく、コネクションを張っているあいだは、有効なので、1ファイル(他のページをinculudeしていればそれらを全部あわせた"1ページ")の先頭に一回実行されればOKと思います。
補足
SELECT の前にSET NAMES ujisで解決しました。ありがとうございました。が、 ふとUPDATEとかINSERTのときは大丈夫なんだろうかと思ったのですが、特に何も気にせずに、例えばフォームからの日本語とか入れてしまって問題ないですか?