2016-04-06 97 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