2013-04-09 2 views
0

Я искал онлайн и пытался понять. Я разбираю некоторые html-файлы, которые закодированы в iso-8859-1. После того, как синтаксический анализ я хочу все выходные, чтобы быть в стандартной кодировке Java (UTF-то)Jsoup parse iso-8859-1 file

Вот как я это делаю:

currentDocument = Jsoup.parse(new File("thing.htm", "ISO-8859-1"); 
Element elt = currentDocument.getElementById("bim"); 
String title = elt.select("h1,h2,h3,h4,h5,h6").first().text(); 
System.out.println(title); 

Строка в файле:

G18 Legemiddeløkonomi – pasientens venn eller fiende 

выход:

G18?Legemiddel?konomi ? pasientens venn eller fiende 

Я предполагаю, что я делаю что-то неправильно где-то, как я знаю, что это возможно с Jsoup Я просто не знаю, что это такое. Btw Я на MacOSX. Может кто-нибудь мне помочь?

Thx

+0

В моих файлах есть '', поэтому я также пробовал использовать 'Jsoup.parse (новый файл (« thing.htm »), null);' он распознает ISO (в соответствии с этим методом currentDocument.outputSettings(). charset(). name() '). Но у меня все еще есть такая же проблема кодирования символов ... – charly

+0

Попробуйте '.html()' вместо '.text()'. Но это приведет к выбросу окружающих тегов. – devnull

+0

Вероятно, у вас неправильная кодировка для 'System.out'. «System.out.println (« \ u00f8 »)' print 'ø' в тех же обстоятельствах? – Esailija

ответ

0

ИТАК после дальнейшего изучения и благодаря @Esailija я обнаружил, что моя консоль не outputing в UTF-8, которая была решена:

PrintStream stdout = new PrintStream(System.out, true, "UTF-8"); 
System.setOut(stdout); 

Я также использовал: currentDocument.outputSettings().charset("UTF-8"); но Я не уверен, что это полезно.