[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 メーリングリストの案内