冬言響 / 日記

アメコミとか映画とか音楽とか猫とか単車とか自転車とか革とか銀とかジーンズとかブーツとか今日喰ったものとか。

RSS2.0

mb_decode_mimeheader()

ISO-2022-JP な文字列をエンコードしてある訳だからデコードしたらまた ISO-2022-JP になってるだろうと思ってそのあと UTF-8 に mb_convert_encoding() したりしなかったりいろいろ試してたのだが、mb_decode_mimeheader() って内部エンコーディングに変換するところまでやってくれちゃうのな。いらんことすんなボケー。まあマニュアルちゃんと読めば最初から判ったことな気もするが。

で、それならそれで例えば mb_decode_mimeheader($strSubject, "UTF-8"); みたいなことが出来れば良いのにそーゆー仕様ではないらしい。仕方ないので

// 元の内部エンコーディングをメモ。
$tmp = mb_internal_encoding;
// 内部エンコーディングを UTF-8 に設定。
mb_internal_encoding("UTF-8");
// メールの Subject をデコード。
$strSubject = mb_decode_mimeheader($strSubject);
// 内部エンコーディングを元に戻す。
mb_internal_encoding($tmp);

という具合で。別に内部エンコーディング元に戻さなくても良いか? まあ変なところで不具合が出ても面倒だし、もう少し調べて検討してから全体をまた 0 から書き直そうという気になったらその時に対処ってことで。