アプリ版:「スタンプのみでお礼する」機能のリリースについて

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");
など書いてみましたが、変わりませんでした。
わかりにくい説明で申し訳ありませんが、文字化けを直す方法をご存じの方、よろしくお願いします。

A 回答 (1件)

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



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

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

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

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

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

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

お礼日時:2006/07/19 10:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!