- 締切済み
php,mysqlでの文字化け(機種依存文字)について
機種依存文字「○いち」「(株)」の文字化けがどうしても解消できません。 phpソースに機種依存文字をコーディングした場合には正しく表示されますが、外部より入力した文字をMySQLに格納し、phpにてデータを取り出し表示すると文字化けします(phpmyadminでの表示時点で文字化け)。 「mb_convert_encoding」等にてテストしてみましたが、結果は変わりませんでした。また、phpmyadminにて直接MySQLに入力しても、phpmyadminでもブラウザ(php表示)でも文字化けしてしまいます。 文字コードについて知識が浅く、各環境はデフォルト状態です。 「mbstring.internal_encoding = EUC-JP 」にも関わらず、「character_set_client = utf8」「character_set_results = utf8」としているのに、機種依存文字以外は問題無く表示されております。 1.機種依存文字化けの対応方法 2.正しい環境設定方法(文字コードの統一を行うべき等) ご教授のほど、何卒宜しくお願い致します。 <<環境>> ・windows xp ・UNIX socket 4.1.22 ・phpMyAdmin - 2.11.1 ・Mysql 4.1.21 ・PHP 4.4.7 【Mysql】 character_set_client = utf8 character_set_connection = utf8 character_set_database = utf8 character_set_results = utf8 character_set_server = ujis character_set_system = utf8 【my.cnf】 [client] default-character-set = ujis [mysqld] default-character-set = ujis [mysqldump] default-character-set = ujis 【php.ini】 mbstring.language = Japanese mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.internal_encoding = EUC-JP mbstring.detect_order = auto mbstring.substitute_character = none; ※phpソースには「charset=euc-jp」を記載
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- inu2
- ベストアンサー率33% (1229/3720)
その前に、あなたが作ろうとしているサイトは機種依存文字を許しているのでしょうか? 不特定多数のOSやブラウザから参照されることを考えると、機種依存文字を許すべきではない。また、機種依存文字をどうにか変換する(このサイトのように)という処理が必要では?
お礼
ご回答ありがとうございます。 サイトでの機種依存文字の使用は認めておりませんが、とはいえ、やはり機種依存文字を使うクライアントがいるのも事実でございます。運用で完全に対応できるのであれば、そうしたいのですが、なかなか。。。 機種依存文字を判定する関数を新規作成し、データベース登録時に新規作成関数にて「機種依存文字を似ている文字に変換(「かっこ株」を「半角かっこ、全角”株”」に変換)し、登録するようなことで対応しようかと考えております。機種依存文字の判定をどうするか、考える必要がありますが。。。 機種依存文字はこう扱うべき(入力チェックでそもそも入力させない、データベース登録時に変換するなど)などのご意見がございましたら、是非ともお聞かせいただきたく思います。 機種依存文字が化けるということは、私が長々と記載した設定ファイル等の登録内容は全く関係がなかったということみたいですね。 的外れな質問にご回答いただき、誠にありがとうございました。