- ベストアンサー
メール送受信、コード変換についての質問
- perlを使用したメール送受信プログラムで文字化けを防ぐためにはどのようなコード変換が必要か疑問です。
- 日本語を扱う際には機種依存しないISO-2022-JP (JIS)に変換することが推奨されていますが、すべての部分に適用すれば良いのか疑問です。
- メールのSubjectに関しても異なるコードが推奨されている場合があるのか疑問です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>なぜなのか? 世の中のサーバーが全て日本語のような2バイト文字を扱えるわけではありません。 メールの送信には、1つのサーバーだけでなく、色々のサーバーのバケツリレーのような形でメールの送信がされますので、それぞれのサーバーを通過できる形式である必要があります。 例えば、 MINE形式のBASE64で変換しておけば、 7ビット以内のアスキー文字列に変換されるので、 8ビット目を含むようなコードを処理できないようなサーバーも通過できます。 JISコードは、KI(漢字始まり)KO(漢字終わり)のような形で、2バイト文字を表しますが、7ビットの範囲のコードになるようにしてありますので、同じく7ビットまでしかあつかえないようなサーバーを通過できます。 一部分のみの(まとまりのないわけわからん)回答ですみません。 そういう"ルール"については詳しくは、RFCをみて下さい。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
あんまり、自信がないので、RFC参照ということなんですが、めぼしいRFCの番号をあげておきます。 (検索サイトは昔は知ってたんですが、アクセスできなくなってました^^;) RFC822:メールフォーマットの大元 以下関連番号 934,976,1049,1137,1344,1428,1437,1468,1524,1555,1556,1557 RFC2045,2046:MINEフォーマット 以下関連番号 1641,1740,1741,1767,1844,1847,1848,1873,1892,1894,1896,1927,2015,2017,2047,2049,2110,2112,2183,2231,2298,2302 以上は、私の持ってる資料からなんで、ちょっと情報としては古いかもしれません。^^;
お礼
RFC読んでまいりました。受信にまずmime-toolsを使用しているので perl内部でBase64化(バイナリ->テキスト)しているみたいです。(mime使用しているのに知りませんでした。。) JISコードと共に気をつけて作業してみます。 どうも有難う御座いました。
補足
連絡が遅くなり申し訳ありません。。 RFCどうも有難う御座いました。これからご提示いただいた番号を参照してきます。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>添付ファイルは画像を送るので(バイナリなので)変換の必要がないと思ってます。 勘違いしてたらすみませんが、 添付ファイルは、メールソフトを使っている場合、メールソフトがMINE形式で変換がされています。 そういう風にアプリケーションで、変換がされない場合、MINE形式に変換する必要があります。 Perlでは、そういうモジュールがあったようなきがしますが。
お礼
すみません、RFCも参照してきます。
補足
ご回答有難う御座います。 >MINE形式のBASE64で変換しておけば、 >7ビット以内のアスキー文字列に変換されるので、 >8ビット目を含むようなコードを処理できないようなサーバーも通過できます。 では、日本語を扱うときはすべてJISコードに変換すればよいのでしょうか? ・受信するメール ・送信するメール ・それぞれのヘッダ、本文 添付ファイルは画像を送るので(バイナリなので)変換の必要がないと思ってます。 間違ってましたらご教示いただきたいです。お願いします。