- 締切済み
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の方も <?php header('Content-Type:text/html; charset=EUC-JP'); ?> や <?php $str = mb_convert_encoding($str, "EUC-JP", "auto"); ?> を実行しても日本語の部分は???で表示されてしまいます。 いろいろと調べたのですが、さっぱり原因がわかりません。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hirosa-ok
- ベストアンサー率72% (8/11)
私のイントラネットの環境では、character_set_client, character_set_connection, character_set_results の値をコマンドラインクライアントから調べると sjis、クエリーブラウザーで調べるとutf8 になっており、どちらも日本が表示できますが、PHPで調べるとそれらが latin1 となっており、そのままでは日本語の部分は ??? となります。 これを防ぐために、データベースからクエリを行う前にサーバにキャラクターセットを変更するSQL文を送っています。 質問者さんの環境でも同様の手法で解決できそうな気がします。