- - PR -
Jakarta Jamesで機種依存文字の変換
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-04-22 20:36
いつもお世話になっています。
Jakarta Jamesでアプリケーションを作ることに なりまして色々と調べています。 環境 Windows2000 JDK1.4.2_06 Jakarta James2.2.0 JavaMail 1.3.1 (※Jamesに同梱) テスト環境として、OutlookExpressを使い、 メーレットに機種依存文字を含めた 「てすとメール鰍いうえお」 という文章を送りWindowsのコンソールに 出力したいのですが、ISO-2022-JPから UNICODEへの変換が上手くいっていないようで、 「てすとメール?あいうえお」 と出力されてしまいます。 Jamesの起動パラメータにJavaMail用のプロパティ設定 "-Dmail.mime.decodetext.strict=false" "-Dmail.mime.address.strict=false" を追加したりしてみたりしたんですが状況が 変わらず悩んでおります。 ユーザーさんに機種依存文字を使わないようにと啓蒙 するのではなく、例えば鰍(株)に置換してあげたいなと 考えているので、どなたかお知恵を授けていただけませんで しょうか、よろしくお願いいたします。 ※"〜"文字などのUNICODEがらみの変換方法はなんとか調べ がついております。 [ メッセージ編集済み 編集者: 松川(日々精進) 編集日時 2005-04-22 20:37 ] | ||||||||
|
投稿日時: 2005-04-23 00:10
ねくです。こんばんは。
確かJavaのISO-2022-JPコンバータの問題だったと思いますので、設定等では回避できないかと思われます。 自分の場合は、受信メールから生のバイト列を取得して、それをShift_JISのバイト列に変換するコードを書いて対応しました。 参考になれば。 | ||||||||
|
投稿日時: 2005-04-23 01:40
夜遅くにご返答ありがとうございます。
やはり設定などではダメなんですね、なるほど。 甘くないんですね、メールの受信処理は。 ![]()
以前対応されたというこの方法についてなのですが、MimeBodyPartのgetRawInputStream などを使って処理を行われたのでしょうか、たとえば1バイトづつ読み出しながら判断するような。 よろしかったら教えていただけませんでしょうか。 [ メッセージ編集済み 編集者: 松川(日々精進) 編集日時 2005-04-23 01:45 ] | ||||||||
|
投稿日時: 2005-04-23 10:20
・全角なら2バイト取得->Shift_JISへ変換してバッファへ格納 ・それ以外ならASCIIとみなして1バイトをバッファへ格納 ・変換が終わったらバッファのバイト列を String tmp = new String(buf,"MS932"); のようにして文字列へ。 charsetを見て、それがISO-2022-JPの場合はこんな処理を行うようにしていました。 | ||||||||
|
投稿日時: 2005-04-24 01:10
ねくさん、どうもありがとうございました。やはり
ISO-2022-JP(JISコード)で来た生バイトデータか らSJIS(MS932)に変換する処理を自前でやる必要が あるんですね。ISO-2022-JPバイト列をMS932のバイト列 に変換する処理を作って対応してみます。定番の クラスライブラリとかあるのかなと思ったんですが、 そういったものは無いようで・・・。 どうもありがとうございました。 |
1