• ベストアンサー

携帯 メールフォーム文字化け

現在携帯のメールフォームを作成しています。 しかし、半角カナで入力した内容が届いたメールでは???と文字化けをしています。 対処の仕方を教えてください。 なお、 if (!mb_check_encoding($var, 'SJIS')) {・・・} ・ ・ ・ ・ mb_language('ja'); mb_internal_encoding('SJIS'); と記述しています。 なにをのせておけばいいのかわからないため、こちらだけにしておきました。 ぜひよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.2

ANo.1です。 mb_send_mail()はmb_language()の設定に基づき変換、エンコードされるとマニュアルにあります。 (http://www.php.net/manual/ja/function.mb-send-mail.php) 翻って質問文を参考にすると、mb_language()は"ja"がセットされているので、日本語はISO-2022-JPに変換されることになりますが、ISO-2022-JPには半角カナはないので文字化けしてしまう、という具合かと思います。 mb_send_mail()ではなくmail()を用いてメールを送信すれば文字コードの変換は行われないので対処は可能ですが、特別な理由がなければ送信前に半角カナを全角カナに変換してISO-2022-JPで送信した方がよいと思います。

h-h13
質問者

お礼

有難うございます。 できました。 また、疑問に思ったのですが、 >mb_send_mail()ではなくmail()を用いてメールを送信すれば文字コードの変換は行われないので対処は可能ですが、特別な理由がなければ送信前に半角カナを全角カナに変換してISO-2022-JPで送信した方がよいと思います。 とありますが、なぜ半角カナは全角カナに直した方がよろしいのでしょうか? セキュリティー上問題でもあるのでしょうか?

その他の回答 (2)

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.3

ANo.1です。 >なぜ半角カナは全角カナに直した方がよろしいのでしょうか? 日本語のメールはISO-2022-JPで送信されるのが一般的でシフトJISなどはあまり好ましくありません。先の回答で触れたとおり、半角カナはISO-2022-JPには含まれないのでISO-2022-JPで送信する場合はそれらを全角に直して読めるようにしてやった方が親切というレベルの話です。 特にセキュリティの問題などはありません。

h-h13
質問者

お礼

有難う御座います。 いろいろと有難う御座います。 とても勉強になりました。

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

メール送信にはどの関数を使用していますか? あるいは外部のライブラリを使用しての送信でしょうか。

h-h13
質問者

補足

お忙しい中有難うございます。 内容が足りず申し訳ありません。 メールの関数は以下になります。 if (ini_get('safe_mode')) { $result = mb_send_mail($mailTo, $subject, $comment, $header); } else { $result = mb_send_mail($mailTo, $subject, $comment, $header, '-f' . $returnMail); } 初心者なものですから、なにもわからずで申し訳ありません。

関連するQ&A

専門家に質問してみよう