Прокси арқылы жүктеу кейінгі 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 қабылдайды. Null charset оның құжатталған анықтауы мен қосалқы әрекетіне жол береді; белгілі және дұрыс HTTP charset әдейі берілуі керек. Негізгі URI салыстырмалы сілтемелерге контекст береді.
Байттар қате декодталғаннан кейін, алынған String-ті басқа charset-пен талдау бастапқы мәтінді қалпына келтірмейді. Байттарға және жауап метадеректеріне оралыңыз. Сондай-ақ алынған нәрсені салыстырыңыз: проксидің кіру беті немесе бас тартуы сұралған беттен мүлдем басқа құжат болуы мүмкін, ондағы декодтау ақауы емес.