二、三日前にPHP掲示板でメール送信時に文字化けしてしまう部分を修正したことがある。その時に散々EUCSJIS変換で悩まされたのだが、この際そのときの「コツ」を書き付けとく。
結論から言うと、例えばSubject ヘッダーに対するEUC->SJIS変換は、
$subject = i18n_convert($subject,'JIS','EUC'); $subject = tree::mime_enc($subject);
こんなカンジで済ますことができる。
tree::mime_encの中身は
function mime_enc($str){ if(get_magic_quotes_gpc()) $str = stripslashes($str); $encode = "=?ISO-2022-JP?B?" . base64_encode($str) . "?="; //Bヘッダ+エンコード return $encode; }
とまあこんなカンジ。ようするに、
''先にEUC->JIS変換をかませた後、改めてbase64_encodeとか言うのをすれば、インターネットで標準的なエンコーディングができる''ということらしい。
じっさい、この順番で行うようになってから文字化けがぴたりと収まった。
これ・・・会員管理用のdo_mail.incとかにも適用したほうがいいかなあ・・・。