我已经创建了一个GAE http servlet,可以处理和缓和收到的电子邮件。
当我收到包含希伯来语文本的传入消息时,它会出现乱码。
例如,当以下代码将获得带有希伯来语文本的传入邮件时:
public void doPost( HttpServletRequest req, HttpServletResponse resp ) throws IOException {
Message message = new MimeMessage( session, req.getInputStream() );
System.out.print( message.getSubject() );
}
将打印类似:×××ק×或一组问号。
答案 0 :(得分:0)
默认情况下,日志不是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>
System Properties and Environment Variables
您是否需要以正确的编码方式阅读?例如,我用不同的编码获取日文邮件并阅读它我必须使用:
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");
}
答案 1 :(得分:0)
您必须区分字符是否错误,或者您是否只是看到错误的字符。 message.getSubject()返回的String对象将包含Unicode字符。您可以检查每个Unicode字符的数值,以查看它是否是正确的字符。
当您打印这些字符时,会发生各种其他字符处理。这些字符可能写成UTF-8或其他一些编码。用于从日志文件中读取这些字符并在屏幕上显示这些字符的软件必须具有与写入字符时相同的字符编码。各种不匹配都是可能的。