无法读取RTF ANSi文件包含阿拉伯语Charachters

时间:2016-04-06 07:04:00

标签: java character-encoding java-8 rtf

我有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()));

错误的输出是:

ÊÑÌãÉ: ÓãíÑ ÇáãÌÐæÈ

1 个答案:

答案 0 :(得分:1)

尝试RTFParserKit,这应该正确支持您描述的编码。

以下是从您的示例中提取的文字:

  

ترجمة:سميرالمجذوب

我使用RTFParserKit附带的RtfDump类将RTF内容转储到XML文件中。该类在提供的输入文件上调用StandardRtfParser,而RtfDumpListener类在读取文件时接收解析器引发的事件,并在内容中向XML文件添加内容。