環境依存文字の「ハート」マークを送信すると文字化け
フォームの入力欄に環境依存文字の「(ハート)」マークを入力し、「送信」と表示されたボタンを押すと、
画面上のボタンは全て消えてしまい、「(ハート)」マークと入力した欄には、「⊇」と表示されて他の入力欄に表示されるはずの日本語文字が文字化けした状態で表示されます。
(表示のみとなる日本語部分や半角表示部分は文字化けしていません。)
「送信」を押された場合のロジックにprint($_POST['submit']);でボタンの名称表示を入れてみると「送信」ではなく「瘧竅」と表示されます。
「送信」ボタンのhtmlソースは、次のような書き方です。
<input name="submit" value="送信" type="submit" />
ちなみに、「(ハート)」マークを入力するとハート文字の選択肢が表示されて、「(ハート)」マークの右隣には、環境依存文字(unicode)表示されます。
また「(ハート)」マーク以外の環境依存文字の(株)や普通の日本語は全く問題なく処理ができますし、「送信」押してもprint($_POST['submit']);の結果は「送信」となります。
「(ハート)」マークと入力して送信を押した場合でも、ボタンが消えず、「送信」を押しても$_POST['submit']の中身が「送信」となるようにするにはどうしたらよいのでしょうか?
■各種設定
http://hain.jp/index.php/tech-j/2007/02/13/%EF%BC%B0%EF%BC%A8%EF%BC%B0%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91のページを参考に設定しました。
(1)HTMLの<HEAD>タグ内への記述
<Meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
(2)php.iniの設定
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = EUC-JP,SJIS,JIS,UTF-8,ASCII
mbstring.substitute_character = none;
;default_charset = "Shift_JIS"
(default_charsetはコメントにしてあります。)
■環境
windows vista
xampp/apache 2.2.4
PHP Version 5.2.3
お礼
なぜでしょう、いわれる通りしてみたら、フォントキャッシュがありませんでした。もしやそのせい?と思って再起動したら、直ってました。ますますわかりませんが、とりあえずはよかったです。「な」を入力しても環境依存文字とは出ません。ありがとうございました。