1

我创建了一个 GAE http servlet,它应该处理和调节传入的电子邮件。

当我收到包含希伯来语文本的传入消息时,它会出现乱码。

例如,当以下代码将收到一封带有希伯来语文本的邮件时:

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 回答