JavaMail无法正确解码ISO-8859-1邮件

时间:2018-11-30 14:41:29

标签: java javamail iso-8859-1

我从IMAP服务器接收到一条消息,该消息使用JavaMail使用Content-Transfer-Encoding: 8bit进行了编码。据我所知,服务器正确地输出了消息并且可以对其进行解码,因为telnet和Thunderbird都显示消息,该消息包含德语短语“ Mit freundlichenGrüßen”(“真诚地属于您”),具体如下:是。

但是,当我使用JavaMail检索MimeMessage并使用以下代码获取其InputStream时,它将返回Mit freundlichen GrüÃen(第二个{后有一个不可见的0x9F字节) {1}}):

Ã

如果我尝试使用MimeMessage msg = imapFolder.getMessages() [0]; // Just for demo purposes StringBuilder builder = new StringBuilder (); String line; try ( BufferedReader reader = new BufferedReader ( new InputStreamReader (msg.getInputStream ()) ) ) { while ((line = reader.readLine ()) != null) { builder.append (line).append ("\n"); } } catch (IOException e) { // ... } 的{​​{1}}函数获取邮件的内容,情况将变得“更糟”;然后返回MimeMessage(两个getRawInputStream ()之后是不可见的Mit freundlichen GrüÃÂen字节,而0x83之后是不可见的Ã字节)。

但是,据我所知,这两个函数都应返回正确的消息。

我应该做

0x9F

Â

(但这在我尝试时不起作用)还是我(和/或服务器)在做其他明显错误的事情?

1 个答案:

答案 0 :(得分:0)

阅读一行后,尝试进行转换为时已晚。使用public class MariosPostgreSQL94Dialect extends PostgreSQL94Dialect { public MariosPostgreSQL94Dialect() { super(); this.registerColumnType(Types.OTHER, "json"); }