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,但它仍显示???
什么是正确的方式?
答案 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);
}