我正在尝试使用 JSP 在我的 Web 应用程序中显示 .msg 文件(即 Outlook 电子邮件)。我正在使用解析器http://auxilii.com/msgparser/提取存储为 RTF 的电子邮件的正文内容(有时或总是 - 我没有检查)
解析器本身带有两个从 RTF 到 HTML 的转换器,SimpleRTF2HTMLConverter
(这对我来说根本不起作用)和JEditorPaneRTF2HTMLConverter
(它起作用但不能正确转换希伯来语文本,只是显示问号)
是否有任何调整JEditorPaneRTF2HTMLConverter
代码(在下面转载)的一般 UniCode(特别是希伯来语)?
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 应用程序中它呈现为 ??。[请注意,如果我只是获取电子邮件的正文而没有格式化,我的应用程序中会正确显示希伯来语。]