jsoup rakstzīmju kodējuma kļūdas pēc lejupielādes caur starpniekserveri
Diagnosticējiet sajauktas rakstzīmes lapā, kas ielādēta caur starpniekserveri, saglabājot atbildes kodējuma informāciju HTML analīzes laikā.
Lapa ielādējas caur starpniekserveri, bet burti ar diakritiskajām zīmēm atgriežas sajaukti. Pirms mainīt starpniekserveri, atrodiet pirmo vietu, kur atbildes baiti kļūst par Java String. InputStreamReader bez skaidra charset var pieņemt šo lēmumu pirms jsoup ierauga dokumentu.
Kad jsoup veic ielādi, turiet atbildi kopā līdz analīzei:
Connection.Response response = Jsoup
.connect("https://www.example.com/catalog")
.proxy("proxy.example", 8080)
.execute();
Document page = response.parse();Atbildes API parāda charset informāciju, kas iegūta no Content-Type. Tas var arī pieņemt skaidru charset aizstāšanu, kad esat konstatējis, ka servera deklarācija ir nepareiza. Starpniekservera adrese pati par sevi nepauž, kādu rakstzīmju kodējumu dokumentā izmanto. Ja nepieciešams atļauts publiskas lapas salīdzinājums bez starpniekservera konta, aizstājiet piemēra HTTP resursdatoru un portu ar kandidātu no HTTP starpniekserveru saraksta, saglabājot tos pašus kodējuma pārbaudījumus.
Ja cits HTTP klients nodrošina InputStream, jsoup plūsmas analīzes pārslodze pieņem charset nosaukumu un bāzes URI. Nulles charset pieļauj tā dokumentēto noteikšanu un rezerves uzvedību; zināms un pareizs HTTP charset ir jānodod apzināti. Bāzes URI nodrošina kontekstu relatīvajām saitēm.
Kad baiti jau ir dekodēti nepareizi, iegūtā String analīze ar citu charset neatgūst oriģinālo tekstu. Atgriezieties pie baitiem un atbildes metadatiem. Salīdziniet arī saņemto: starpniekservera pieteikšanās lapa vai atteikums var būt pavisam cits dokuments nekā pieprasītā lapa, nevis dekodēšanas kļūda tajā.