Страницата се вчитува преку проксито, но буквите со дијакритички знаци се враќаат искривени. Пред да го смените проксито, пронајдете го првото место каде бајтите на одговорот стануваат Java String. InputStreamReader без експлицитен charset може да ја донесе таа одлука пред jsoup да го види документот.

Кога jsoup го врши преземањето, држете го одговорот заедно до анализата:

Connection.Response response = Jsoup
    .connect("https://www.example.com/catalog")
    .proxy("proxy.example", 8080)
    .execute();
Document page = response.parse();

API-то за одговор изложува информации за charset изведени од Content-Type. Тоа може да прифати и експлицитно надминување на charset кога утврдивте дека декларацијата на серверот е погрешна. Самата адреса на проксито не ви кажува кое кодирање на знаци го користи документот. Ако ви треба дозволена споредба на јавна страница без сметка за прокси, заменете го HTTP домаќинот и портата од примерот со кандидат од списокот на HTTP прокси, запазувајќи ги истите проверки за кодирање.

Ако друг HTTP клиент обезбедува InputStream, преоптоварувањето за анализа на поток на jsoup прифаќа име на charset и основен URI. Null charset го дозволува документираното откривање и резервно однесување; познат и правилен HTTP charset треба намерно да се пренесе. Основниот URI дава контекст за релативните врски.

Откако бајтите еднаш се декодирани погрешно, анализата на добиениот String со друг charset не го враќа оригиналниот текст. Вратете се на бајтите и метаподатоците од одговорот. Споредете го и она што е примено: страницата за најава или одбивањето на проксито може да биде сосема друг документ од бараната страница, а не грешка при декодирање во неа.

Поврзани статии