私は、電子メールの処理にJavaMailを使用しています。件名は、次の文字セットでエンコードされています 電子メールでx-mac-ceエンコーディングを扱う方法件名
Subject: =?x-mac-ce?Q?Wdro=BFenia_znaku_CE?=
私は、電子メールの処理にJavaMailを使用しています。件名は、次の文字セットでエンコードされています 電子メールでx-mac-ceエンコーディングを扱う方法件名
Subject: =?x-mac-ce?Q?Wdro=BFenia_znaku_CE?=
Windows seems to usex-mac-ce
Windows-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 encoding(x-MacCentralEurope
Java Charset)はCP1250と完全に一致せず、その転置バージョンのようです。 0xBFは0xFB e.t.cに一致する)。
明らかに、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を説明しています。
はい、動作していますが、部分的です。件名はデコードされましたが、磨き文字はありません。 –
@PiotrOlaszewski - あなたのメッセージの実際の文字セットを正しく識別できると思います。 – zeppelin
はい、cp1250への変更が正しくエンコードされました。 –