jsoup-ի նիշերի կոդավորման սխալներ պրոքսիով ներբեռնումից հետո
Ախտորոշեք աղավաղված նիշերը պրոքսիով բեռնված էջում՝ պահպանելով պատասխանի կոդավորման տվյալները HTML վերլուծության ընթացքում։
Էջը բեռնվում է պրոքսիով, բայց շեշտադրված տառերը վերադառնում են աղավաղված։ Նախքան պրոքսին փոխելը՝ գտեք առաջին տեղը, որտեղ պատասխանի բայթերը դառնում են 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-ով վերլուծելը չի վերականգնում բնագրային տեքստը։ Վերադարձեք բայթերին և պատասխանի մետատվյալներին։ Համեմատեք նաև ստացվածը. պրոքսիի մուտքի էջը կամ մերժումը կարող է բոլորովին այլ փաստաթուղթ լինել, քան հարցված էջը, և ոչ թե դրա մեջ վերծանման ձախողում։