Javax邮件解码特殊字符

时间:2014-06-23 20:48:52

标签: java character-encoding javax.mail

 BodyPart b = mp.getBodyPart(j);
        String mimeType2 = b.getContentType();

        Object o2 = b.getContent();

        System.out.println("O2 is " + o2);
        if ((o2 instanceof String))
        {
        return (String) o2;
        }

我正在使用此代码从多部分消息的电子邮件中读取正文;它工作正常,但它显示???主题和信息中的特殊字符。

我浏览过stackoverflow并用Google搜索,我没有看到以utf-8格式解码的直接方式。

我在mimeutility中使用了decodeText,但它仍显示???

什么是正确的方式?

1 个答案:

答案 0 :(得分:0)

当(Unicode)字符无法写入具有有限编码的字节时,会看到?

在Windows下System.out通常使用单字节Windows ANSI编码。

通常检查代码如何将文本(String/Reader)输出为二进制数据(byte[]/OuputStream)。

测试将其写入文件,因为您可以使用可以处理编码的程序员编辑器(如JEdit或NotePad ++)进行检查。

检查您是否也不使用具有编码的版本的重载方法。避免使用FileWriter。

void dumpString(String s) {
    for (int i = 0; i < s.length(); ++i) {
        System.out.printf("%04x ", 0xFFFF & (int)s.charAt(i));
    }
    System.out.println(s);
}