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も違和感があるなあ。
February 18th, 2007 at 1:05 pm
[...] 関連記事 [...]