我有RTF
个文件在ANSI
中编码,同时包含Arabic
个短语。我正在尝试读取此文件,但无法以正确的编码方式读取它。
RTF文件:
{\rtf1\fbidis\ansi\deff0{\fonttbl{\f0\fnil\fcharset178 MS Sans Serif;}{\f1\fnil\fcharset0 MS Sans Serif;}}
\viewkind4\uc1\pard\ltrpar\lang12289\f0\rtlch\fs16\'ca\'d1\'cc\'e3\'c9: \'d3\'e3\'ed\'d1 \'c7\'e1\'e3\'cc\'d0\'e6\'c8\f1\ltrch\par
}
我的java代码是:
RTFEditorKit rtf = new RTFEditorKit();
Document doc = rtf.createDefaultDocument();
rtf.read(new InputStreamReader(new FileInputStream("Document.rtf"), "windows-1256"),doc,0);
System.out.println(doc.getText(0,doc.getLength()));
错误的输出是:
ÊÑÌãÉ: ÓãíÑ ÇáãÌÐæÈ
答案 0 :(得分:1)
尝试RTFParserKit,这应该正确支持您描述的编码。
以下是从您的示例中提取的文字:
ترجمة:سميرالمجذوب
我使用RTFParserKit附带的RtfDump
类将RTF内容转储到XML文件中。该类在提供的输入文件上调用StandardRtfParser
,而RtfDumpListener
类在读取文件时接收解析器引发的事件,并在内容中向XML文件添加内容。