我使用JavaMail来处理电子邮件。主题编码在以下字符集中:
Subject: =?x-mac-ce?Q?Wdro=BFenia_znaku_CE?=
如何使用JavaMail对此进行解码。
答案 0 :(得分:1)
Windows seems to use x-mac-ce
作为Windows-1250
代码页的别名(与CP1250 JDK字符集匹配)。
JavaMail 在内部维护一个“MIME to Java”charset别名的映射, MimeUtility.javaCharset方法,处理类似的情况。
不幸的是x-mac-ce
没有mapping(至少从JavaMail 1.6.0开始),并且(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等)
答案 1 :(得分:0)
显然x-mac-ce是一个非标准的字符集。 JavaMail依赖于JDK来处理charset编码到Unicode字符串的转换。如果,如上所述,x-mac-ce与CP1250字符集等效,则JavaMail FAQ解释how to use the JDK's facilities to map unknown charsets to known charsets。