Java Play Framework-通过SendGrid接收电子邮件-电子邮件正文的字符编码

Java Play Framework-通过SendGrid接收电子邮件-电子邮件正文的字符编码,java,email,encoding,utf-8,playframework,Java,Email,Encoding,Utf 8,Playframework,我正在Java Play框架中开发一个小型邮件客户端,我正在使用SendGrid来处理电子邮件。当收到一封电子邮件时,它被发布到一个url,然后我使用JsonNode解析发布的表单。现在的问题是,该表单的“to”、“from”、“subject”字段由SendGrid自动转换为UTF-8。现在问题来了:显然,电子邮件正文是用“ISO-8859-1”编码的。我需要把这个字符串转换成“UTF-8”。我已经尝试了几种方法,但很可能我做了一些非常错误的事情,因为我总是在法语或德语单词中使用奇怪的字符,这

我正在Java Play框架中开发一个小型邮件客户端,我正在使用SendGrid来处理电子邮件。当收到一封电子邮件时,它被发布到一个url,然后我使用JsonNode解析发布的表单。现在的问题是,该表单的“to”、“from”、“subject”字段由SendGrid自动转换为UTF-8。现在问题来了:显然,电子邮件正文是用“ISO-8859-1”编码的。我需要把这个字符串转换成“UTF-8”。我已经尝试了几种方法,但很可能我做了一些非常错误的事情,因为我总是在法语或德语单词中使用奇怪的字符,这些字符包含重音/umlauts(例如“Zürich”显示为“Z?rich”)。我用于转换的代码如下所示:

byte[] msg = message.getBytes("ISO-8859-1");
byte[] msg_utf8 = new String(msg, "ISO-8859-1").getBytes("UTF-8");
message = new String(msg_utf8, "UTF-8");

请您提出一个解决方案好吗?非常感谢您!

好的,所以我使用注释从SendGrid获得了原始字节请求,并使用正确的编码创建了java字符串:

@BodyParser.Of(BodyParser.Raw.class)
public static Result getmail() {
 ...
}
现在的问题是,为了从请求中检索文件附件,我需要将请求解析为MultipartFormData。设置了上述注释后,我在调用时会得到一个NullPointerException,这是可以预测的:

request().body().asMultipartFormData().getFiles()

你们有没有人知道我如何再次得到相同的请求,但是用@BodyParser.of(BodyParser.MultipartFormData.class)解析?所以我需要结合两个注释,或者找到一种方法将我从原始解析器得到的字节[]转换成多格式数据。谢谢!

什么是“消息”?对你有用吗?我从发布的表单(通过SendGrid)中获得字符串消息不,我已经试过了。所以根据电子邮件头,我直接得到了这个消息字符串,它在ISO-8859-1中。我必须将它转换为UTF-8,这样我才能将它存储在数据库中。你能将电子邮件头作为字节数组给出吗?为了帮助你,你的问题应该很容易重现。我得到的消息字符串如下:String message=form.get(“text”);where final DynamicForm form=form().bindFromRequest();所以我真的不知道你的意思?难道没有人在Java中通过SendGrid成功接收电子邮件吗?