Битая кодировка при парсинге 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));
}

Проблемы с кодировкой при парсинге Википедии через "windows-1251"


Ответы (0 шт):