機種依存文字が?になる
HTML_QuickFormを利用してフォーム送信しているのですが
受信したメールを見ると特定の文字が?になってしまい
文字化けをしてしまいます。
具体的にはメールで確認した際に<input type="text" ・・・>に
入力した半角カタカナと機種依存文字が?に変わっておりました。
php,tplファイルは全てutf-8で保存されphpのソースは以下のようになっております。
header('Content-Type: text/html; charset=utf-8');
mb_language('Japanese');
mb_http_input('UTF-8');
mb_http_output('UTF-8');
mb_internal_encoding('UTF-8');
require_once 'HTML/QuickForm.php';
require_once 'HTML/QuickForm/Renderer/ArraySmarty.php';
require_once 'Smarty/Smarty.class.php';
$to = 'mail@ad.com';
$form = new HTML_QuickForm('inq', 'post');
$form->addElement('text', 'name', '名前',
array('class' => text));
$form->addElement('text', 'ad', '住所',
array('class' => text));
$form->addElement('textarea', 'msg', 'コメント', array('rows' => 8, 'cols' => 30));
$value = $form->getSubmitValues();
if (isset($value['accept'])) {
$subject = '連絡';
$message = <<<EOD
【名前】
{$value['name']}
【住所】
{$value['ad']}
【メッセージ】
{$value['msg']}
【メッセージ】
{$value['msg']}
EOD;
mb_send_mail($to, $subject, $message, "From: {$value['連絡']}");
$form->freeze();
~略~
半角カタカナの件は
$message = mb_convert_kana ($message, 'K');
とし解決したのですが機種依存文字の解決策が見つからず自分なりに
なんとか調べてみたところ下記のurlがみつかりました。
http://shimax.cocolog-nifty.com/search/2007/12/phpeucjputf8_f714.html
utf-8では機種依存文字が?になるのは当たり前のことなのですね。
これを応用しなんとかできるかと思い下記のようにしてみたのですが
結果は同じでした・・・
$message = mb_convert_encoding(mb_convert_encoding($message,"sjis-win","UTF-8"),"UTF-8","sjis-win");
どのようにすれば解決できるものなのでしょうか?
宜しくお願い致します。
お礼
gmailでも、webでも、iPhoneで見る事ができる特殊文字は表示されないですね… しかくに×がついたマークで埋まります。 なるほど、対応が不十分ということなのでしょうか… 現状では我慢するしかなさそうですね…。 ご回答いただき、ありがとうございました。