ข้อผิดพลาดการเข้ารหัสอักขระของ jsoup หลังดาวน์โหลดผ่านพร็อกซี
วินิจฉัยอักขระที่เพี้ยนบนหน้าที่โหลดผ่านพร็อกซี โดยรักษาข้อมูลการเข้ารหัสของคำตอบไว้ตลอดการแยกวิเคราะห์ HTML
หน้าเว็บโหลดผ่านพร็อกซี แต่ตัวอักษรที่มีเครื่องหมายกำกับเสียงกลับมาเพี้ยน ก่อนเปลี่ยนพร็อกซี ให้หาตำแหน่งแรกที่ไบต์ของคำตอบกลายเป็น Java String InputStreamReader ที่ไม่ได้ระบุ charset อย่างชัดเจนอาจตัดสินใจเรื่องนั้นก่อนที่ jsoup จะเห็นเอกสาร
เมื่อ jsoup จัดการการดึงข้อมูลเอง ให้เก็บคำตอบไว้เป็นชิ้นเดียวกันจนถึงขั้นแยกวิเคราะห์:
Connection.Response response = Jsoup
.connect("https://www.example.com/catalog")
.proxy("proxy.example", 8080)
.execute();
Document page = response.parse();API ของคำตอบเปิดเผยข้อมูล charset ที่ได้มาจาก Content-Type และยังรับการแทนที่ charset อย่างชัดเจนได้เมื่อคุณยืนยันว่าคำประกาศของเซิร์ฟเวอร์ไม่ถูกต้อง ที่อยู่พร็อกซีเพียงอย่างเดียวไม่ได้บอกว่าเอกสารใช้การเข้ารหัสอักขระใด หากต้องการเปรียบเทียบหน้าสาธารณะที่ได้รับอนุญาตโดยไม่มีบัญชีพร็อกซี ให้แทนที่โฮสต์และพอร์ต HTTP ของตัวอย่างด้วยผู้สมัครจาก รายการพร็อกซี HTTP โดยคงการตรวจสอบการเข้ารหัสแบบเดิมไว้
หากไคลเอนต์ HTTP อื่นจัดหา InputStream ส่วนเสริมการแยกวิเคราะห์สตรีมของ jsoup จะรับชื่อ charset และ URI ฐาน ค่า charset เป็น null จะอนุญาตให้ใช้การตรวจจับและพฤติกรรมสำรองตามที่เอกสารระบุ charset ของ HTTP ที่รู้จักและถูกต้องควรถูกส่งต่ออย่างตั้งใจ URI ฐานให้บริบทสำหรับลิงก์สัมพัทธ์
เมื่อไบต์ถูกถอดรหัสผิดไปแล้ว การแยกวิเคราะห์ String ที่ได้ด้วย charset อื่นจะไม่กู้คืนข้อความเดิม กลับไปที่ไบต์และเมทาดาทาของคำตอบ และเปรียบเทียบสิ่งที่ได้รับด้วย: หน้าเข้าสู่ระบบหรือการปฏิเสธของพร็อกซีอาจเป็นเอกสารที่ต่างจากหน้าที่ร้องขอโดยสิ้นเชิง ไม่ใช่ความล้มเหลวในการถอดรหัสในเอกสารนั้น