T

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も違和感があるなあ。

Posted by on 2月 8, 2007 in PHP

Comments

  • […] さらにggrってみたところ Selfkleptomaniac > mb_decode_mimeheaderの挙動 […]

  • コメントを残す