だいたいどこにでも書いてあるのは、mb_convert_encoding 使ってプログラムの文字エンコードから ISO-2022-JP に変換する方法。
ええ、腐るほどやりましたよ。それでも文字化けする。mb_language と mb_internal_encoding を適切に設定ってのも勿論やりました。これもダメ。mb_language() は ja とか japanses とか uni にしろとか、もう何が何だか判らない。
プログラムファイルの文字コードも s-jis や utf-8 にしたけどダメ。BASE64にしたら?みたいなのもあったので、UTF-8 -> BASE64 -> ISO-2022-JP 変換もやりましたがダメ。
いい加減諦めていたんですが、ようやく文字化けしないノウハウにぶつかった。ちなみに PHP 5.2 系の話。
mb_encode_mimeheaderの都市伝説を検証する CPA-LABテクニカル 様
技術的な事は全く判らない(笑)ので、詳細は上記ノウハウにお任せするとして、結果的にこうしました。
プログラムは utf-8 で書いています。サンプルなんで適当に。
mb_language(“uni”);
mb_internal_encoding(“utf-8”);
$subject = “テスト”;
$subject = mb_convert_encoding($subject,’utf-8′,mb_detect_encoding($subject));
$subject = mb_encode_mimeheader($subject,’iso-2022-jp’);
ちなみに、本文は
$message = mb_convert_encoding($message,”iso-2022-jp”,”utf-8″);
であっさり通りました。ヘッダに multipart/mixed 書いてbase64_encode した添付ファイルも正常に受け取れました。
というか。
自分はプログラマじゃないって!
ネットワークエンジニアにプログラム組ませるのはやめようよ!(笑)
« 記事を折り畳む