Stránka sa načíta cez proxy, ale písmená s diakritikou sa vracajú skomolené. Skôr než zmeníte proxy, nájdite prvé miesto, kde sa bajty odpovede stanú Java String. InputStreamReader bez explicitného charsetu môže toto rozhodnutie urobiť skôr, než jsoup uvidí dokument.

Keď jsoup zabezpečuje stiahnutie, držte odpoveď pokope až do analýzy:

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

API odpovede sprístupňuje informácie o charsete odvodené z Content-Type. Môže tiež prijať explicitné prepísanie charsetu, keď zistíte, že deklarácia servera je nesprávna. Samotná adresa proxy nehovorí, aké kódovanie znakov dokument používa. Ak potrebujete povolené porovnanie verejnej stránky bez proxy účtu, nahraďte HTTP hostiteľa a port z príkladu kandidátom zo zoznamu HTTP proxy a zachovajte rovnaké kontroly kódovania.

Ak InputStream dodá iný HTTP klient, preťaženie streamovanej analýzy v jsoup prijíma názov charsetu a základné URI. Null charset umožňuje dokumentované rozpoznanie a záložné správanie; známy a správny HTTP charset treba odovzdávať zámerne. Základné URI poskytuje kontext pre relatívne odkazy.

Keď sú bajty už dekódované nesprávne, analýza výsledného Stringu iným charsetom pôvodný text neobnoví. Vráťte sa k bajtom a metadátam odpovede. Porovnajte aj to, čo bolo prijaté: prihlasovacia stránka alebo odmietnutie proxy môže byť úplne iný dokument ako požadovaná stránka, a nie chyba dekódovania v nej.

Súvisiace články