16
2009

JavaMailでの文字化け対策

CATEGORYJava
JavaMail久しぶりに触ったら忘れ欠けてたのでメモ。

日本語のメールで幅広い人を対象にするなら、文字コードは ISO-2022-JP
UTF-7とかUTF-8とかもあるけど、どこかしらか読めないってクレームが来ると思って間違いない。
Shift_JISやWindows-31Jとかも同様。
まぁ、ISO-2022-JPやUTF-8と違って、あえてこいつら使うことは無いと思うけど・・・。

次に、よく問題になる機種依存文字(①とか)について。
ISO-2022-JPには無い文字なので、Shift_JISを使ったときみたいに化ける。
どうしてもなんとかしたい場合の文字コードとして、x-windows-iso2022jp が用意されている。
Shift_JISに対するWindows-31J みたいな感じ。

が、JavaMailの呼び出しで x-windows-iso2022jp と書くと、実際のメールに書かれる文字コードまで ISO-2022-JP じゃなくて x-windows-iso2022jp になってしまい、状況が悪化する。
そこで、Javaの起動オプションに下記を指定して、文字コードを読み替える。
-Dsun.nio.cs.map=x-windows-iso2022jp/ISO-2022-JP

もう一つ、メールの文末にゴミ「w)」が付くことがある。
これはメールの本文が改行コードで終わっていないと発生する(本当はもっと根が深い話?)。
メーラーによっては、ゴミが付くだけでなく丸々化けて読めなくなることもある模様(Outlook 2003で確認)。
とりあえず、本文末に改行コード \n を付加してやることで対処できる。
スポンサーサイト

Tag: Java JavaMail

0 Comments

Leave a comment