質問: phpとmysqlでの文字化けについて 現在phpとmysqlを利用したwebシステムを作成しています。 しかし文字化けが発生して困っています。こちらの環境は php5.1.4 mysql5.1.11 phpmyadmin - 2.8.0-rc1 レンタルサーバー(xrea)を使っています。 自分でいろいろと調べたところ文字のエンコードはujisに統一したほうがいいとのことまではわかりました。 show variables like "char%"; を実行したところ character_set_client utf8 character_set_connection sjis character_set_database ujis character_set_filesystem binary character_set_results utf8 character_set_server utf8 character_set_system utf8 このように表示されます。 phpの方も や を実行しても日本語の部分は???で表示されてしまいます。 いろいろと調べたのですが、さっぱり原因がわかりません。 よろしくお願いします。
回答: 私のイントラネットの環境では、character_set_client, character_set_connection, character_set_results の値をコマンドラインクライアントから調べると sjis、クエリーブラウザーで調べるとutf8 になっており、どちらも日本が表示できますが、phpで調べるとそれらが latin1 となっており、そのままでは日本語の部分は ??? となります。 これを防ぐために、データベースからクエリを行う前にサーバにキャラクターセットを変更するsql文を送っています。 質問者さんの環境でも同様の手法で解決できそうな気がします。