質問: 類似した質問が過去にたくさんあるのですが、、 perlでメールを送受信するプログラムを作成しております。 その時の文字化けに備えメールヘッダや本文はコード変換する 必要があることはわかったのですが、それぞれについてどんな コード変換をしなければいけないのか?またなぜなのか?が良くわかりません。 いろいろなサイトや過去ログを調べてみて、OSの、使用するコード、メーラなど 十人十色だかららしいのですが、 たとえば、日本語を扱う時は、機種に依存しないISO-2022-JP (JIS)にするとか あったのですが、すべてをそれに変換すればよいのでしょうか?? それともSubjectは違うコードが推奨とか、いろいろとルールがあるのでしょうか? 曖昧な質問ですみません。宜しくお願いします。
回答: >なぜなのか? 世の中のサーバーが全て日本語のような2バイト文字を扱えるわけではありません。 メールの送信には、1つのサーバーだけでなく、色々のサーバーのバケツリレーのような形でメールの送信がされますので、それぞれのサーバーを通過できる形式である必要があります。 例えば、 MINE形式のBASE64で変換しておけば、 7ビット以内のアスキー文字列に変換されるので、 8ビット目を含むようなコードを処理できないようなサーバーも通過できます。 JISコードは、KI(漢字始まり)KO(漢字終わり)のような形で、2バイト文字を表しますが、7ビットの範囲のコードになるようにしてありますので、同じく7ビットまでしかあつかえないようなサーバーを通過できます。 一部分のみの(まとまりのないわけわからん)回答ですみません。 そういう"ルール"については詳しくは、RFCをみて下さい。