0

我正在 Java Play 框架中开发一个小型邮件客户端,并且我正在使用 SendGrid 来处理电子邮件。当收到一封电子邮件时,它会被发布到一个 url,然后我使用 JsonNode 解析发布的表单。现在的问题是该表单的“to”、“from”、“subject”字段由 SendGrid 自动转换为 UTF-8。现在问题来了:显然,电子邮件正文是用“ISO-8859-1”编码的。我需要将该字符串转换为“UTF-8”。我已经尝试了几种方法,但很可能我做错了什么,因为我总是得到包含重音/变音符号的法语或德语单词的奇怪字符(例如“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");

请问您能否提出解决方案?非常感谢您!

4

1 回答 1

0

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

@BodyParser.Of(BodyParser.Raw.class)
public static Result getmail() {
 ...
}

现在的问题是,为了从请求中检索文件附件,我需要将请求解析为 MultipartFormData。使用上面的注释设置,我在调用时得到一个 NullPointerException,这是可以预见的:

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

你们有谁知道我如何再次获得相同的请求,但用 @BodyParser.Of(Bodyparser.MultipartFormData.class) 解析?所以我有点需要结合这两个注释或找到一种方法将我从原始解析器获得的 byte[] 转换为 MultiFormData。谢谢!

于 2013-11-03T20:26:36.217 回答