JavaMail特殊文字付本文が文字化けで困ってい
現在JavaMail(Ver1.4)+JAVA 7を使用して、あるメール配信システムを
構築しています。仕様上特殊文字を使用しなければならないので、
受信メールに特殊文字付本文が文字化けで困っています
JavaMailのバッチがIBMのUNIX系AIXサーバ(文字コードがCP943C)
に置いて、起動する
メール本文データがIBMのDB2(文字コードがCP943C)から取得し、
Stringのhonbun_DB変数にいれる。
メール送信の本文が
String honbun = new String(honbun_DB.getBytes("ISO-2022-JP"),"ISO-2022-JP")
msg.setText(honbun,"ISO-2022-JP");
メールのヘッダーが
msg.setHeader("Content-Type", "text/plain; charset="+"ISO-2022-JP");
msg.setHeader("Content-Transfer-Encoding", "7bit");
問題点:
getBytesでISO-2022-JP範囲外文字(いわゆる機種依存文字)すべて?に
置き返されます。
送信メールに、(1)(株)といった機種依存文字、NEC拡張外字が入っている
場合、文字が化けます。
ネットで得た対策方法について、以下方法が試しました。
対策1:
Javaの起動オプション-Dsun.nio.cs.map=x-windows-iso2022jp/ISO-2022-JP付ける
こちらのオプションがoracle者のJVMの有効で、現在のシステムがIBMのJVMを使用して
いるので、効かないです。
対策2:
本文がshift-jisにする手もありますが、APPLE社のMAC、iphone端末で、同様に
機種依存文字が化けます。
対策3:
String honbun = new String(honbun_DB.getBytes("ISO-2022-JP"),"ISO-2022-JP")
の代わりに、getBytes()使用せずに、独自のCP943Cの文字コードからISO-2022-JP
の文字コードに変換するロジックを組むという提案(機種依存文字でも、getBytes()みたいの
?に置き換えではなく、JIS範囲コードに変換)もあった。品質の懸念があるため、採用難しいところ。
上記対策1,2、3以外の方法があれば、教えていただけると助かります。
例えば対策3の機種依存文字か、ISO-2022-JP範囲内文字か、すべてJISコードに変換できる
ライブラリなど
長文となって申し訳ありません。
補足
でも今まではこうはなっていなかったんですが・・・