Proksi orqali yuklab olingandan keyin jsoupda belgilar kodlash xatolari
HTML tahlili davomida javobning kodlash ma'lumotini saqlab, proksi orqali yuklangan sahifadagi buzilgan belgilarni diagnostika qiling.
Sahifa proksi orqali yuklanadi, lekin diakritik belgili harflar buzilgan holda qaytadi. Proksini almashtirishdan oldin javob baytlari Java String bo'ladigan birinchi joyni toping. Aniq charset ko'rsatilmagan InputStreamReader bu qarorni jsoup hujjatni ko'rishidan oldin qabul qilishi mumkin.
jsoup yuklab olishni o'zi bajarganda, javobni tahlilgacha birga saqlang:
Connection.Response response = Jsoup
.connect("https://www.example.com/catalog")
.proxy("proxy.example", 8080)
.execute();
Document page = response.parse();Javob API Content-Type'dan olingan charset ma'lumotini ochib beradi. Server bayonoti noto'g'ri ekanini aniqlaganingizda u aniq charset almashtirishni ham qabul qiladi. Proksi manzilining o'zi hujjat qaysi belgilar kodlashidan foydalanishini aytmaydi. Proksi hisobisiz ruxsat etilgan ommaviy sahifa taqqoslash kerak bo'lsa, misoldagi HTTP xost va portni HTTP proksilar ro'yxatidan nomzod bilan almashtiring, bir xil kodlash tekshiruvlarini saqlab qolgan holda.
Agar boshqa HTTP mijoz InputStream taqdim etsa, jsoupning oqim tahlili ortiqcha yuklamasi charset nomi va asosiy URI'ni qabul qiladi. Null charset uning hujjatlashtirilgan aniqlash va zaxira xatti-harakatiga yo'l qo'yadi; ma'lum va to'g'ri HTTP charset ataylab uzatilishi kerak. Asosiy URI nisbiy havolalar uchun kontekst beradi.
Baytlar noto'g'ri dekodlangandan keyin, olingan Stringni boshqa charset bilan tahlil qilish asl matnni tiklamaydi. Baytlarga va javob metama'lumotlariga qayting. Qabul qilingan narsani ham taqqoslang: proksi kirish sahifasi yoki rad javobi so'ralgan sahifadan butunlay boshqa hujjat bo'lishi mumkin, undagi dekodlash nosozligi emas.