Java Can';t Read RTF ANSi文件包含阿拉伯字符

Java Can';t Read RTF ANSi文件包含阿拉伯字符,java,character-encoding,java-8,rtf,Java,Character Encoding,Java 8,Rtf,我有RTF文件是用ANSI编码的,而它包含阿拉伯语短语。我正在尝试读取此文件,但无法以正确的编码读取它 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\'e

我有
RTF
文件是用
ANSI
编码的,而它包含
阿拉伯语
短语。我正在尝试读取此文件,但无法以正确的编码读取它

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()));
错误的输出是:

ÊÑÌãÉ: ÓãíÑ ÇáãÌÐæÈ
试试看,这应该正确地支持您描述的编码

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

ت


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

据我所知,Swing不支持,并且默认忽略,RTF文件的
\fcharset178
指令,您对此无能为力,因为该过程中涉及的所有相关类都是非
公共的
…因此有没有办法替换
RTF
文件中的一些字符以正确读取它?或者通常有一个JAVA库可以从
RTF
文件中读取阿拉伯语字符?这是正确的文本,您可以编写代码吗?找不到任何关于
RTFParseKit
用法的示例。我已经添加了一个关于
RtfDump
示例代码的简要说明。Thx很多Jon。。非常有用的答案