ホーム » ブログ » 2006年03月 » PHPのmb_encode_mimeheaderは事前にmb_internal_encodingが必要

PHPのmb_encode_mimeheaderは事前にmb_internal_encodingが必要

2006-03-11 written by akiyan | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

PHPのmb_encode_mimeheader関数で文字列をエンコードするときは、直前にmb_internal_encoding関数で変換したい文字列のエンコーディングをセットしてから呼ばないとうまく動作しないもよう。エンコードした文字列の後ろのほうが化け化けになってしまう。例えば「ご登録いただきありがとうございます」が「ご登録いただきありがH$&$4$6$$$^$9」というふうに。

回避例として、以下のように書く。

// 元のエンコーディングを保存
$orgEncoding = mb_internal_encoding();
// 変換したい文字列のエンコーディングをセット
mb_internal_encoding($targetEncoding); 
// エンコーディング実行
$encodedString  = mb_encode_mimeheader($targetString, $targetEncoding, 'B', "\n");
// 保存しておいたエンコーディングに戻す
mb_internal_encoding($orgEncoding); 

PHPのバージョンは5.1.2。

2006-03-11 written by akiyan | 記事 | このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

コメント

投稿



本文と関連性の無いコメントは削除することがあります。予めご了承ください。

トラックバック

このエントリへのトラックバックURLは
http://www.akiyan.com/cgi/mt/mt-tb.cgi/203
です。トラックバック元のエントリに当サイトへのリンクが無い場合はトラックバックを削除することがあります。

  1. mb_internal_encoding()は必須か? - よくきたblog from http://blog.poyo.jp/
    2006-03-14 01:01:25
  2. :備忘録 from PukiWiki (PukiWiki/TrackBack 0.3)
    2006-08-22 04:04:05
  3. PHPで日本語を使うのだ from LEGGODT.COM
    2006-12-08 17:05:03