Грешке кодовања знакова у 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 проксија, задржавајући исте провере кодовања.
Ако други HTTP клијент даје InputStream, jsoup-ова варијанта за анализу тока прихвата назив charset-а и основни URI. Null charset дозвољава документовано откривање и резервно понашање; познат и исправан HTTP charset треба свесно пренети. Основни URI даје контекст за релативне везе.
Када су бајтови једном погрешно декодирани, анализа добијеног String-а другим charset-ом не враћа изворни текст. Вратите се бајтовима и метаподацима одговора. Упоредите и оно што је примљено: проксијева пријавна страница или одбијање могу бити сасвим други документ од тражене странице, а не грешка декодирања у њој.