2016-04-06 70 views
1

RTF文件ANSI进行编码,而它包含Arabic短语。我试图读取这个文件,但无法用正确的编码读取它。无法读取RTF文件ANSI包含阿拉伯语Charachters

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

据我所看到的,摆不配套,默默忽略,您的RTF文件的'\ fcharset178'指令并没有什么可以做它作为参与这一进程的所有相关类是非'public '... – Holger

+0

那么有什么方法可以替换'RTF'文件中的某些字符来正确读取它?或者一般情况下有o JAVA库从'RTF'文件中读取阿拉伯字符? – Jason4Ever

回答

1

尝试RTFParserKit,这应该正确地支持类似的编码你描述的那些。

这里是您的示例中提取的文本:

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

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

+0

这是正确的文本,你能写代码吗?找不到'RTFParseKit'用法的任何示例。 – Jason4Ever

+0

我已经添加了关于'RtfDump'示例代码的简要说明。 –

+0

Thx很多乔恩..非常有用的答案 – Jason4Ever