0

Java Play Framework で小さなメール クライアントを開発しており、電子メールに 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 String を作成しました。

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

問題は、リクエストから添付ファイルを取得するために、リクエストを MultipartFormData として解析する必要があることです。上記の注釈を設定すると、呼び出し時に NullPointerException が発生しますが、これは予測可能でした。

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

@BodyParser.Of(Bodyparser.MultipartFormData.class) で解析された同じリクエストを再度取得する方法について何か考えがある人はいますか? したがって、2 つの注釈を組み合わせるか、Raw パーサーから取得した byte[] を MultiFormData に変換する方法を見つける必要があります。ありがとう!

于 2013-11-03T20:26:36.217 に答える