jsoup karakterkódolási hibák proxyn keresztüli letöltés után
Diagnosztizálja az összekeveredett karaktereket egy proxyn keresztül betöltött oldalon úgy, hogy a válasz kódolási adatait megőrzi a HTML-elemzés során.
Az oldal a proxyn keresztül töltődik be, de az ékezetes betűk összekeveredve jönnek vissza. Mielőtt proxyt váltana, keresse meg az első helyet, ahol a válasz bájtjai Java Stringgé válnak. Egy explicit charset nélküli InputStreamReader még azelőtt meghozhatja ezt a döntést, hogy a jsoup látná a dokumentumot.
Amikor a jsoup végzi a letöltést, tartsa együtt a választ az elemzésig:
Connection.Response response = Jsoup
.connect("https://www.example.com/catalog")
.proxy("proxy.example", 8080)
.execute();
Document page = response.parse();A válasz API a Content-Type-ból származó charset-információkat tárja fel. Explicit charset-felülírást is elfogadhat, ha megállapította, hogy a szerver deklarációja hibás. Egy proxycím önmagában nem mondja meg, milyen karakterkódolást használ a dokumentum. Ha engedélyezett nyilvános oldal-összehasonlításra van szüksége proxyfiók nélkül, cserélje ki a példa HTTP-gazdagépét és portját egy jelöltre a HTTP-proxylistából, miközben megtartja ugyanazokat a kódolási ellenőrzéseket.
Ha egy másik HTTP-kliens biztosít InputStreamet, a jsoup stream-elemző túlterhelése elfogad egy charset-nevet és egy alap URI-t. A null charset engedélyezi a dokumentált felismerést és tartalék viselkedést; egy ismert és helyes HTTP charsetet szándékosan kell továbbadni. Az alap URI kontextust ad a relatív hivatkozásokhoz.
Miután a bájtok hibásan dekódolódtak, a kapott String más charsettel való elemzése nem állítja vissza az eredeti szöveget. Térjen vissza a bájtokhoz és a válasz metaadataihoz. Hasonlítsa össze azt is, ami megérkezett: a proxy bejelentkező oldala vagy elutasítása teljesen más dokumentum lehet, mint a kért oldal, nem pedig dekódolási hiba benne.