RTF to text - problém s diakritikou

2006-10-04 Tema obsahu Ondřej Fafejta KYBERIE
Zdravím konferenci!

Pro získání textu z RTF používám RTFEditorKit.
Mám ovšem problém s diakritikou. Některé znaky se převedou pouze na
otazníky (?) přesto, že openoffice i M$ word to načtou v pořádku.

Nevíte, v čem dělám chybu? Připadá mi to, jako kdyby ten RTFEditor
uvažoval pouze kódování ISO-8859-1.

Na googlu jsem hledal a nic kloudného jsem nenašel :-(.
http://forum.java.sun.com/thread.jspa?threadID=727449messageID=4240360

Díky
Fafi

kód vypadá následovně:

public String parse(InputStream is) throws Exception{
RTFEditorKit kit = new RTFEditorKit();
Document doc = kit.createDefaultDocument();
kit.read(is, doc, 0);
return doc.getText(0, doc.getLength());
}

Metoda, která to otestuje vypadá následovně (dokument test.rtf je v příloze)

public static void main(String args[]) throws Exception{
InputStream is = new FileInputStream(testing_documents/test.rtf);
RtfTestParser parser = new RtfTestParser();
String result = parser.parse(is);
is.close();
System.out.println(result);
}
{\rtf1\ansi\deff1\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset238 Times New Roman;}{\f1\froman\fprq2\fcharset238 Times New Roman;}{\f2\fswiss\fprq2\fcharset238 Arial;}{\f3\froman\fprq2\fcharset238 Times New Roman;}{\f4\fswiss\fprq2\fcharset238 Arial;}{\f5\fnil\fprq2\fcharset238 Andale Sans UI{\*\falt Arial Unicode MS};}{\f6\fswiss\fprq2\fcharset238 Luxi Sans;}{\f7\fswiss\fprq2\fcharset238 Andale Sans UI{\*\falt Arial Unicode MS};}{\f8\fnil\fprq0\fcharset238 Andale Sans UI{\*\falt Arial Unicode MS};}{\f9\fswiss\fprq0\fcharset238 Andale Sans UI{\*\falt Arial Unicode MS};}}
{\colortbl;\red0\green0\blue0;\red128\green128\blue128;}
{\stylesheet{\s1\rtlch\af7\afs24\lang255\ltrch\dbch\af6\langfe255\hich\fs24\lang1029\loch\fs24\lang1029\snext1 Normal;}
{\s2\sb240\sa120\keepn\rtlch\af5\afs28\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs28\lang1029\loch\f2\fs28\lang1029\sbasedon1\snext3 Heading;}
{\s3\sa120\rtlch\af7\afs24\lang255\ltrch\dbch\af6\langfe255\hich\fs24\lang1029\loch\fs24\lang1029\sbasedon1\snext3 Body Text;}
{\s4\sa120\rtlch\af9\afs24\lang255\ltrch\dbch\af6\langfe255\hich\fs24\lang1029\loch\fs24\lang1029\sbasedon3\snext4 List;}
{\s5\sb120\sa120\rtlch\af8\afs24\lang255\ai\ltrch\dbch\af6\langfe255\hich\fs24\lang1029\i\loch\fs24\lang1029\i\sbasedon1\snext5 caption;}
{\s6\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\fs24\lang1029\loch\fs24\lang1029\sbasedon1\snext6 Index;}
{\s7\sb240\sa120\keepn\rtlch\af1\afs28\lang255\ltrch\dbch\af7\langfe255\hich\f4\fs28\lang1029\loch\f4\fs28\lang1029\sbasedon1\snext3 Heading;}
{\s8\sb120\sa120\rtlch\af9\afs24\lang255\ai\ltrch\dbch\af6\langfe255\hich\fs24\lang1029\i\loch\fs24\lang1029\i\sbasedon1\snext8 caption;}
{\s9\rtlch\af9\afs24\lang255\ltrch\dbch\af6\langfe255\hich\fs24\lang1029\loch\fs24\lang1029\sbasedon1\snext9 Index;}
}
{\info{\creatim\yr2006\mo10\dy3\hr14\min43}{\revtim\yr1601\mo1\dy1\hr0\min0}{\printim\yr1601\mo1\dy1\hr0\min0}{\comment StarWriter}{\vern6800}}\deftab709
{\*\pgdsctbl
{\pgdsc0\pgdscuse195\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}}
{\*\pgdscno0}\paperh16837\paperw11905\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
\pard\plain \ltrpar\s1\ql\rtlch\af7\afs24\lang255\ltrch\dbch\af6\langfe255\hich\fs24\lang1029\loch\fs24\lang1029 {\rtlch \ltrch\loch\f1\fs24\lang1029\i0\b0 {\*\bkmkstart DDE_LINK}p\'f8\'edli\'9a \'9elu\'9dou\'e8k\'fd k\'f9\'f2 \'fap\'ecl \'ef\'e1belsk\'e9 \'f3dy{\*\bkmkend DDE_LINK}}
\par \pard\plain \ltrpar\s1\caps\ql\rtlch\af7\afs24\lang255\ltrch\dbch\af6\langfe255\hich\fs24\lang1029\loch\fs24\lang1029 {\rtlch \ltrch\loch\f1\fs24\lang1029\i0\b0 p\'f8\'edli\'9a \'9elu\'9dou\'e8k\'fd k\'f9\'f2 \'fap\'ecl \'ef\'e1belsk\'e9 \'f3dy}
\par }

Re: RTF to text - problém s diakritikou

2006-10-04 Tema obsahu Karel Tejnora
Jo, používá. Jak jsem to pochopil - tak buď je RTF v latin2 nebo jsou 
použity (snad se da říci) tabulka znaků.

RTF je čistý text takže enca může zjistit jeho kódování.

Pro Javu se hodne pouziva:
http://sourceforge.net/projects/majix/

Nevíte, v čem dělám chybu? Připadá mi to, jako kdyby ten RTFEditor
uvažoval pouze kódování ISO-8859-1.

Na googlu jsem hledal a nic kloudného jsem nenašel :-(.
http://forum.java.sun.com/thread.jspa?threadID=727449messageID=4240360