Страницата се зарежда през проксито, но буквите с диакритични знаци се връщат разбъркани. Преди да сменяте проксито, намерете първото място, където байтовете на отговора стават 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. Нулевият charset позволява документираното му откриване и резервно поведение; известен и правилен HTTP charset трябва да се предава умишлено. Базовият URI дава контекст за относителните връзки.

След като байтовете са декодирани неправилно, анализът на получения String с друг charset не възстановява оригиналния текст. Върнете се към байтовете и метаданните на отговора. Също сравнете какво е получено: страницата за вход или отказът на проксито може да е напълно различен документ от заявената страница, а не грешка в декодирането ѝ.

Подобни статии