Էջը բեռնվում է պրոքսիով, բայց շեշտադրված տառերը վերադառնում են աղավաղված։ Նախքան պրոքսին փոխելը՝ գտեք առաջին տեղը, որտեղ պատասխանի բայթերը դառնում են Java String։ Առանց բացահայտ charset-ի InputStreamReader-ը կարող է այդ որոշումը կայացնել նախքան jsoup-ը կտեսնի փաստաթուղթը։

Երբ jsoup-ը զբաղվում է ներբեռնմամբ, պահեք պատասխանը միասին մինչև վերլուծությունը՝

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

Պատասխանի API-ն ցուցադրում է Content-Type-ից ստացված charset տեղեկատվությունը։ Այն կարող է նաև ընդունել charset-ի բացահայտ փոխարինում, երբ հաստատել եք, որ սերվերի հայտարարությունը սխալ է։ Պրոքսի հասցեն ինքնին չի ասում, թե փաստաթուղթը որ նիշերի կոդավորումն է օգտագործում։ Եթե ձեզ անհրաժեշտ է թույլատրելի հանրային էջի համեմատություն առանց պրոքսի հաշվի, օրինակի HTTP հոսթն ու պորտը փոխարինեք HTTP պրոքսիների ցանկից թեկնածուով՝ պահպանելով կոդավորման նույն ստուգումները։

Եթե մեկ այլ HTTP հաճախորդ տրամադրում է InputStream, jsoup-ի հոսքի վերլուծության ծանրաբեռնվածությունն ընդունում է charset-ի անուն և բազային URI։ Զրոյական charset-ը թույլ է տալիս նրա փաստաթղթավորված հայտնաբերումն ու պահուստային վարքը. հայտնի և ճիշտ HTTP charset-ը պետք է փոխանցվի դիտավորյալ։ Բազային URI-ն համատեքստ է տալիս հարաբերական հղումներին։

Երբ բայթերն արդեն սխալ վերծանված են, ստացված String-ը այլ charset-ով վերլուծելը չի վերականգնում բնագրային տեքստը։ Վերադարձեք բայթերին և պատասխանի մետատվյալներին։ Համեմատեք նաև ստացվածը. պրոքսիի մուտքի էջը կամ մերժումը կարող է բոլորովին այլ փաստաթուղթ լինել, քան հարցված էջը, և ոչ թե դրա մեջ վերծանման ձախողում։

Առնչվող հոդվածներ