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

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

締切り済みの質問

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」を記載

投稿日時 - 2008-03-08 16:19:26

QNo.3844217

すぐに回答ほしいです

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

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

回答(1)

ANo.1

その前に、あなたが作ろうとしているサイトは機種依存文字を許しているのでしょうか?
不特定多数のOSやブラウザから参照されることを考えると、機種依存文字を許すべきではない。また、機種依存文字をどうにか変換する(このサイトのように)という処理が必要では?

投稿日時 - 2008-03-09 15:50:47

お礼

ご回答ありがとうございます。

サイトでの機種依存文字の使用は認めておりませんが、とはいえ、やはり機種依存文字を使うクライアントがいるのも事実でございます。運用で完全に対応できるのであれば、そうしたいのですが、なかなか。。。

機種依存文字を判定する関数を新規作成し、データベース登録時に新規作成関数にて「機種依存文字を似ている文字に変換(「かっこ株」を「半角かっこ、全角”株”」に変換)し、登録するようなことで対応しようかと考えております。機種依存文字の判定をどうするか、考える必要がありますが。。。
機種依存文字はこう扱うべき(入力チェックでそもそも入力させない、データベース登録時に変換するなど)などのご意見がございましたら、是非ともお聞かせいただきたく思います。

機種依存文字が化けるということは、私が長々と記載した設定ファイル等の登録内容は全く関係がなかったということみたいですね。

的外れな質問にご回答いただき、誠にありがとうございました。

投稿日時 - 2008-03-10 15:45:40

あなたにオススメの質問