mb_decode_mimeheaderの挙動
PHPのmb_decode_mimeheaderの挙動が変だ。PHPのmb_internal_encodingに合わせてデコードするのが仕様なのだが、普通のメールはJIS(ISO-2022-JP)で送信されている。PHPの開発で日本語の内部エンコーディングをJISにしている人はほとんどいないだろうから、デコード時の文字コードを引数で渡す方が理にかなっているはずだ。
仕方がないので、こんな感じにしないといけないから面倒くさい。
$internal_encoding = mb_internal_encoding(); if($internal_encoding != 'JIS'){ mb_internal_encoding('JIS'); } $subject = mb_decode_mimeheader($subject); mb_internal_encoding($internal_encoding);
こうして見ると、引数を渡すと内部エンコードを設定するboolean関数になり、渡さないと現在の内部エンコードを文字列で返す文字列型の関数になるmb_internal_encodingも違和感があるなあ。
Comments
[…] 関連記事 […]
[…] さらにggrってみたところ Selfkleptomaniac > mb_decode_mimeheaderの挙動 […]