PHPのmb_encode_mimeheader関数で文字列をエンコードするときは、直前にmb_internal_encoding関数で変換したい文字列のエンコーディングをセットしてから呼ばないとうまく動作しないもよう。エンコードした文字列の後ろのほうが化け化けになってしまう。例えば「ご登録いただきありがとうございます」が「ご登録いただきありがH$&$4$6$$$^$9」というふうに。
回避例として、以下のように書く。
// 元のエンコーディングを保存 $orgEncoding = mb_internal_encoding(); // 変換したい文字列のエンコーディングをセット mb_internal_encoding($targetEncoding); // エンコーディング実行 $encodedString = mb_encode_mimeheader($targetString, $targetEncoding, 'B', "\n"); // 保存しておいたエンコーディングに戻す mb_internal_encoding($orgEncoding);
PHPのバージョンは5.1.2。




投稿