Ошибки кодировки символов в jsoup после загрузки через прокси
Диагностируйте искажённые символы на странице, загруженной через прокси, сохраняя сведения о кодировке ответа при разборе HTML.
Страница загружается через прокси, но буквы с диакритикой возвращаются искажёнными. Прежде чем менять прокси, найдите первое место, где байты ответа становятся 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-прокси, сохранив те же проверки кодировки.
Если InputStream предоставляет другой HTTP-клиент, перегрузка потокового разбора jsoup принимает имя charset и базовый URI. Нулевой charset допускает задокументированное определение и резервное поведение; известный и правильный HTTP charset следует передавать осознанно. Базовый URI даёт контекст для относительных ссылок.
После того как байты уже декодированы неверно, разбор полученной String с другим charset не восстанавливает исходный текст. Вернитесь к байтам и метаданным ответа. Сравните и то, что было получено: страница входа или отказ прокси может быть совсем другим документом, чем запрошенная страница, а не ошибкой декодирования в ней.