mb_decode_mimeheaderの挙動

PHP February 8th, 2007

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

One Response to “mb_decode_mimeheaderの挙動”

  1. Selfkleptomaniac » Blog Archive » mb_internal_encoding Says:

    [...] 関連記事 [...]

Leave a Reply