[PHP-users 26734] Re: mb_send_mailのbodyが一部文字化け
Tomoyuki Asakawa
tom @ asakawa.ne.jp
2005年 9月 1日 (木) 17:32:10 JST
あさかわ
> mb_internal_encoding("UTF-8");
>
> $to = "めーるあどれす";
> $subject = "題名";
> $body = $tmpl->merge(); //テンプレート(EUC)とマージ
> $body= mb_convert_encoding($body, "JIS", "EUC-JP");
internal_encodingが、UTF-8なのだから、JISではなく、
UTF-8に変換しないと駄目です。
mb_sendmailが、internal_encodingから、JISに変換して
送信します。
DBから読み込んだものが、化けないのは、UTF-8で読み込まれて
るからでしょう。
また、POSTデータも、EUC_JPではなく、UTF-8に変
換しなくてはなりません。
そもそも、
フォーム(スクリプト)SJIS
テンプレートEUC
DB(内部) UTF-8
と、ぐちゃぐちゃにしてるのが問題でしょう。
フォームをSJISで出力したいのなら
mbstring.http_output = SJIS-WIN
にしたほうがいいです。
内部を、UTF-8にしたいのなら。
テンプレートは、UTF-8で記述するか、UTF-8に変換する。
スクリプトは、UTF-8で記述するか
mbstring.script_encoding
で変換する。
と良いでしょう。
ポイントは、PHPの内部処理中のコードを統一することです。
PHP-users メーリングリストの案内