1

受信メールを処理および管理する GAE http サーブレットを作成しました。

ヘブライ語のテキストを含むメッセージを受信すると、文字化けします。

たとえば、次のコードがヘブライ語のテキストを含む受信メール メッセージを取得する場合:

public void doPost( HttpServletRequest req, HttpServletResponse resp ) throws IOException {

       Message message = new MimeMessage( session, req.getInputStream() );
       System.out.print( message.getSubject() );

}

×××ק×または疑問符のセットのようなものを出力します。

4

2 に答える 2

0

1

ログはデフォルトで ISO-8859-1 ではありませんか?

私はこれを使用しています...

<system-properties>
    <property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
    <property name="file.encoding" value="UTF-8" />
    property name="DEFAULT_ENCODING" value="UTF-8" />
</system-properties>

システム プロパティと環境変数

2

正しいエンコーディングで読む必要はありませんか? たとえば、日本語のメールをさまざまなエンコーディングで受け取り、それを読むには次を使用する必要があります。

            InputStreamReader isr;

            if (message.getContentType().contains("ISO-2022-JP")) {
                        isr = new InputStreamReader(message.getInputStream(), "ISO-2022-JP");
            } else {
                        isr = new InputStreamReader(message.getInputStream(), "UTF-8");
                    }
于 2012-08-14T07:14:54.740 に答える
0

文字が間違っているのか、間違った文字を表示しているだけなのかを区別する必要があります。message.getSubject() によって返される String オブジェクトには、Unicode 文字が含まれます。これらの Unicode 文字のそれぞれの数値を調べて、正しい文字かどうかを確認できます。

これらの文字を印刷すると、他のあらゆる種類の文字処理が発生します。文字は、おそらく UTF-8 またはその他のエンコーディングで記​​述されています。これらの文字をログ ファイルから読み取って画面に表示するために使用するソフトウェアは、文字が書き込まれたときに使用されたのと同じ文字エンコードを想定する必要があります。あらゆる種類のミスマッチが可能です。

于 2012-08-14T18:38:05.133 に答える