Битая кодировка при парсинге HTML через Jsoup
Выполняя учебное задание столкнулся с проблемой чтения различных кодировок.
Изначально парсил данный сайт http://rst-nurka.net/price.html, подавая в метод parse строку с HTML кодом страницы, программа работает, но выдает битые кодировки на буквах "Р" и "И".
Предположив что дело в самом сайте, а не во мне, решил парсить страницу из википедии, заменив parse с HTML на parse(File in, String charsetName, String baseUri). При указании кодировки UTF-8 совсем не читается кириллица (выдает одни лишь символы), что очень странно так как изначальная кодировка страницы UTF-8, если поменять кодировку на windows 1251, то кириллица читается нормально не считая тех самых "И" и "Р".
Подскажите как решить данную проблему, если суть задания сделать так, чтобы парсер вытягивал с сайта все, не смотря на кодировку. (то есть придется парсить иностранные сайты с разными алфавитами и т.д).
public class DefaultExtractor implements Extractor {
public static void main(String[] args) {
Link l = new Link("https://ru.wikipedia.org/wiki/%D0%AF%D0%B4%D0%BE%D0%B2%D0%B8%D1%82%D1%8B%D0%B9_%D0%BF%D0%BB%D1%8E%D1%89_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_1992)");
HTML h = new HTML("",l);
HashSet setOfWords = (HashSet) new DefaultExtractor().extract(h);
System.out.println(setOfWords);
}
public Set<String> extract(HTML html) {
/*Document doc = Jsoup.parse(html.toString());
for (Element element : doc.select("*"))
set.add(element.text());
return set;*/
Document doc = null;
try {
//doc = Jsoup.parse(new ByteArrayInputStream(html.toString().getBytes()), "windows-1251", html.getUrl().toString());
doc = Jsoup.parse( new File("D:\\Users\\Kazuru\\Downloads\\Suka.html"), "windows-1251", html.getUrl().toString());
//doc = Jsoup.connect("https://ru.wikipedia.org/wiki/%D0%AF%D0%B4%D0%BE%D0%B2%D0%B8%D1%82%D1%8B%D0%B9_%D0%BF%D0%BB%D1%8E%D1%89_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_1992)").get();
} catch (IOException e) {
e.printStackTrace();
}
String allInfo = doc.text();
System.out.println(allInfo);
String[] stringsArray;
stringsArray = allInfo.split("\\s");
// System.out.println(setOfWords);
return new HashSet<>(Arrays.asList(stringsArray));
}
