2016-04-06 8 views
1

Ich habe RTF Dateien sind in ANSI codiert, während es Arabic Sätze enthält. Ich versuche diese Datei zu lesen, konnte sie aber nicht in der richtigen Kodierung lesen.Kann nicht lesen RTF ANSi Datei enthält arabische Zeichen

RTF-Datei:

{\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 

} 

und mein Java-Code ist:

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

und die falsche Ausgabe lautet:

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

Soweit ich sehen kann, unterstützt Swing die '\ fcharset178'-Anweisung Ihrer RTF-Datei nicht und ignoriert sie stillschweigend, und Sie können nichts dagegen tun, da alle relevanten Klassen in diesem Prozess nicht öffentlich sind '... – Holger

+0

Also gibt es eine Möglichkeit, einige Zeichen in' RTF'-Datei zu ersetzen, um es richtig zu lesen? oder gibt es generell eine JAVA-Bibliothek, um arabische Zeichen aus 'RTF'-Dateien zu lesen? – Jason4Ever

Antwort

1

RTFParserKit Versuchen, sollte dies korrekt Kodierungen unterstützen wie die diejenigen, die du beschreibst. Hier

ist der Text aus Ihrem Beispiel extrahiert:

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

Ich benutzte die RtfDump Klasse, die Schiffe mit RTFParserKit die RTF-Inhalt in eine XML-Datei auszugeben. Die Klasse ruft die StandardRtfParser für die angegebene Eingabedatei auf, während die Klasse RtfDumpListener die vom Parser beim Lesen der Datei ausgegebenen Ereignisse empfängt und der XML-Datei Inhalt hinzufügt.

+0

Das ist der richtige Text, können Sie den Code schreiben? konnte kein Beispiel für die Verwendung von 'RTFParseKit' finden. – Jason4Ever

+0

Ich habe eine kurze Notiz über den Beispielcode 'RtfDump' hinzugefügt. –

+0

Thx viel Jon .. sehr nützliche Antwort – Jason4Ever