Siden indlæses via proxyen, men bogstaver med accenter kommer forvanskede tilbage. Før du skifter proxy, find det første sted, hvor svarets bytes bliver en Java String. En InputStreamReader uden eksplicit charset kan træffe den beslutning, før jsoup ser dokumentet.

Når jsoup står for hentningen, hold svaret samlet indtil parsingen:

Connection.Response response = Jsoup
    .connect("https://www.example.com/catalog")
    .proxy("proxy.example", 8080)
    .execute();
Document page = response.parse();

Svarets API eksponerer charset-oplysninger, der stammer fra Content-Type. Det kan også acceptere en eksplicit charset-tilsidesættelse, når du har fastslået, at serverens angivelse er forkert. En proxyadresse i sig selv fortæller ikke, hvilken tegnkodning dokumentet bruger. Hvis du har brug for en tilladt sammenligning af en offentlig side uden proxykonto, erstat eksemplets HTTP-vært og -port med en kandidat fra HTTP-proxylisten, mens du beholder de samme kodningstjek.

Hvis en anden HTTP-klient leverer en InputStream, accepterer jsoups stream-parse-overload et charset-navn og en basis-URI. Et null-charset tillader dens dokumenterede registrering og fallback-adfærd; et kendt, korrekt HTTP-charset bør videregives bevidst. Basis-URI'en giver kontekst til relative links.

Når bytes først er dekodet forkert, gendanner parsingen af den resulterende String med et andet charset ikke den oprindelige tekst. Gå tilbage til bytes og svarets metadata. Sammenlign også det modtagne: en proxys login-side eller afvisning kan være et helt andet dokument end den ønskede side, snarere end en dekodningsfejl i den.

Relaterede artikler