2017-10-17 5 views

答えて

1

Windows seems to usex-mac-ceWindows-1250コードページ(CP1250 JDKの文字セットと一致)の別名です。そのようなケースを処理するために、 MimeUtility.javaCharset方法で解決として

JavaMailのは、内部で「MIME Javaへの」文字セットエイリアスのマップを保持します。

残念ながら、x-mac-ce(少なくともJavaMail 1.6.0以降)にはmappingがなく、(AFAIK)拡張APIがないため、追加することはできません。

ですから、現時点でできる最善のは、そのように、アプリケーションコードで件名をデコードしている:

MimeUtility.decodeText(
    m.getSubject().replace("x-mac-ce","CP1250") 
) 

テスト

m.setSubject("=?x-mac-ce?Q?Wdro=BFenia_znaku_CE?="); 
System.out.printf(
    MimeUtility.decodeText(
     m.getSubject().replace("x-mac-ce","CP1250") 
    ) 
); 

>>Wdrożenia znaku CE 

私はまず、エンコーディングを間違ってMacintosh Central European encodingx-MacCentralEurope Java Charset)はCP1250と完全に一致せず、その転置バージョンのようです。 0xBFは0xFB e.t.cに一致する)。

+0

はい、動作していますが、部分的です。件名はデコードされましたが、磨き文字はありません。 –

+0

@PiotrOlaszewski - あなたのメッセージの実際の文字セットを正しく識別できると思います。 – zeppelin

+0

はい、cp1250への変更が正しくエンコードされました。 –

0

明らかに、x-mac-ceは非標準の文字セットです。 JavaMailは、charsetエンコーディングのUnicode文字列への変換を処理するJDKに依存します。上で説明したように、x-mac-ceがCP1250文字セットと等しい場合、JavaMail FAQはhow to use the JDK's facilities to map unknown charsets to known charsetsを説明しています。

関連する問題