JSP を使用して、Web アプリケーションで .msg ファイル (つまり、Outlook 電子メール) を表示しようとしています。RTFとして保存されている電子メールの本文コンテンツを抽出するパーサーhttp://auxilii.com/msgparser/を使用しています(時々または常に-チェックしていません)
パーサー自体には、RTF から HTML への 2 つのコンバーター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);
}
}
}
例として。元の電子メールには電話番号が記載されています - טלפון (電話) の略語である 2 つのヘブライ文字に注意してください。
טל: 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 アプリケーションでは ?? としてレンダリングされます。[書式を設定せずに電子メールの本文だけを取得すると、アプリケーションでヘブライ語が正しく表示されることに注意してください。]