Jsoup анализирует файл iso-8859-1

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

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

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, я просто не знаю, что это такое. Кстати, я на MacOSX. Кто-нибудь может мне помочь?

Спасибо


person charly    schedule 09.04.2013    source источник
comment
Во всех моих файлах есть <meta charset="iso-8859-1">, поэтому я также пробовал с Jsoup.parse(new File("thing.htm"), null);, он распознает ISO (согласно этому методу currentDocument.outputSettings().charset().name()). Но у меня все еще такая же проблема с кодировкой символов...   -  person charly    schedule 10.04.2013
comment
Попробуйте .html() вместо .text(). Но это приведет к тому, что будут испущены окружающие теги.   -  person devnull    schedule 10.04.2013
comment
Вероятно, у вас неправильная кодировка для System.out. System.out.println("\u00f8") печатает ø при тех же обстоятельствах?   -  person Esailija    schedule 10.04.2013
comment
Итак, на самом деле я использую Lucene с этими документами, и когда я открываю документы с помощью Люка, они хорошо закодированы. Однако две вещи &nbsp; преобразуются в &#160; возможно ли избавиться от всех html-объектов? Я попытался записать его в файл вместо System.out, и я тоже не получил правильную кодировку. Знаете ли вы, как я могу написать или использовать System.out с правильной кодировкой? Спасибо   -  person charly    schedule 10.04.2013


Ответы (1)


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

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

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

person charly    schedule 10.04.2013