我正在尝试使用JSP在我的Web应用程序中显示.msg文件(即Outlook电子邮件)。我正在使用解析器http://auxilii.com/msgparser/,它提取存储为RTF的电子邮件的正文内容(有时或总是 - 我没有检查过)
解析器本身带有两个从RTF转换为HTML的转换器,SimpleRTF2HTMLConverter
(对我来说根本不起作用)和JEditorPaneRTF2HTMLConverter
(它有效但不能正确转换希伯来文本但是只显示问号)
是否总体上调整了UniCode的JEditorPaneRTF2HTMLConverter
代码(下面再现)(特别是希伯来语)?
public class JEditorPaneRTF2HTMLConverter implements RTF2HTMLConverter {
public String rtf2html(String rtf) throws Exception {
JEditorPane p = new JEditorPane();
p.setContentType("text/rtf");
EditorKit kitRtf = p.getEditorKitForContentType("text/rtf");
try {
StringReader rtfReader = new StringReader(rtf);
kitRtf.read(rtfReader, p.getDocument(), 0);
kitRtf = null;
EditorKit kitHtml = p.getEditorKitForContentType("text/html");
Writer writer = new StringWriter();
kitHtml.write(writer, p.getDocument(), 0, p.getDocument().getLength());
return writer.toString();
} catch (Exception e) {
throw new Exception("Could not convert RTF to HTML.", e);
}
}
}
举个例子。在原始电子邮件中,有一个电话号码 - 请注意两个希伯来语字母,它们是טלפון(电话)的缩写
טל: 02-9999999
在输入到此功能的RTF中,它看起来像这样
\pard\qr\plain{\f3\rtlch\lang13\cf2\fs20 \'E8\'EC': 02-9999999}\par
在从此函数输出的HTML中,它看起来像这样
<p class=default>
<span style="color: #808080; font-size: 10pt; font-family: Arial">
鬧: 02-9999999
</span>
<span style="color: #000000; font-size: 12pt; font-family: Times New Roman">
</span>
</p>
StackOverflow中出现闹的字符在NotePad ++中显示为xE8xEC(以反转字符显示),而在我的Web应用程序中,它呈现为??。 [注意希伯来语在我的应用程序中正确显示,如果我只是在没有格式化的情况下获取电子邮件的正文。]