みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

文字化けで困っています(mySQL4.1のデータをphpで取得)

phpでmySQLのデータベースからデータを取得し表示させたいと思っています。
文字化けしてしまい、???で表示され困っています。
<環境>
レンタルサーバーのMySQL - 4.1.16を使用しています。
Variable_name Value
character_set_client utf8
character_set_connection ujis
character_set_database ujis
character_set_results utf8
character_set_server ujis
character_set_system utf8
character_sets_dir /usr/local/mysql-4.1.16/share/mysql/charsets/
レンタルサーバなので、my.cnfを変更することはできず、.htaccessファイルに
AddType "text/html; charset=Shift_JIS" html,php
AddCharset Shift_JIS .html,php
など書いてみたり、phpファイルに、
header('Content-Type:text/html; charset=Shift_JIS');
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
mysql_query("SET CHARACTER SET SJIS");
など書いてみましたが、変わりませんでした。
わかりにくい説明で申し訳ありませんが、文字化けを直す方法をご存じの方、よろしくお願いします。

投稿日時 - 2006-07-18 22:55:47

QNo.2284491

困ってます

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

文字コードに関してはみんな通る道です(笑。

文字コード等に関して環境的にいじれないようですから、分けて管理した方が良いです。混ぜて考えると、訳分からなくなります。実際にはこれだけの要素が混在しているはずです(まだあるかな?)。

サーバのデフォルトの文字コード(多くはEUC-JP)
PHP記述ファイルの文字コード
WEBサーバの出力文字コード(これは都度指定です)
データベースのデータの文字コード
フォームデータの受信文字コード

これらを全て統一する必要はありません。確かに、統一出来れば楽ですけどね。サーバの管理者に依存する事もありますし。

これらの文字コードをちゃんと決めて、それぞれのステップでエンコード変換すれば確実です。
mb_convert_encoding($str,"TO","FROM");

データベースと内部エンコードが違う場合等は、関数化しておけば簡単だとおもいます。

投稿日時 - 2006-07-19 09:14:19

お礼

taketan_mydns_jpさんありがとうございます。
文字化けが直りました!(涙)
文字コード難しいですね。日本語が世界共通ならきっとこんな苦労はないんですよね。
本当にありがとうございました。

投稿日時 - 2006-07-19 10:52:53

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問