2

我正在尝试使用 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 应用程序中它呈现为 ??。[请注意,如果我只是获取电子邮件的正文而没有格式化,我的应用程序中会正确显示希伯来语。]

4

0 回答 0