Logicky Blog

Logickyの開発ブログです

PHP - mailのタイトルが文字化けする

参考:mb_encode_mimeheaderの都市伝説を検証する

1.mb_internal_encodingの文字コード 2.mb_encode_mimeheaderに渡す文字列の文字コード 3.mime変換する最終文字コード この中で、1と2が一致している必要があるだけであって、3は独立していてOKです。 2→3の文字コード変換は、mb_encode_mimeheaderがきちんとやってくれます。
$internal = 'utf-8';
$input    = 'utf-8';
$target   = 'iso-2022-jp';

mb_language('ja');
mb_internal_encoding($internal);
$word = "あ";
$word = mb_convert_encoding($word,$input,mb_detect_encoding($word));
echo $a=mb_encode_mimeheader($word,$target);

参考:ISO-2022-JP

ISO-2022-JPは、インターネット上(特に電子メール)などで使われる日本の文字用の文字符号化方式。ISO/IEC 2022のエスケープシーケンスを利用して文字集合を切り替える7ビットのコードであることを特徴とする (アナウンス機能のエスケープシーケンスは省略される)。俗に「JISコード」と呼ばれることもある。