หน้าเว็บโหลดผ่านพร็อกซี แต่ตัวอักษรที่มีเครื่องหมายกำกับเสียงกลับมาเพี้ยน ก่อนเปลี่ยนพร็อกซี ให้หาตำแหน่งแรกที่ไบต์ของคำตอบกลายเป็น 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 อื่นจะไม่กู้คืนข้อความเดิม กลับไปที่ไบต์และเมทาดาทาของคำตอบ และเปรียบเทียบสิ่งที่ได้รับด้วย: หน้าเข้าสู่ระบบหรือการปฏิเสธของพร็อกซีอาจเป็นเอกสารที่ต่างจากหน้าที่ร้องขอโดยสิ้นเชิง ไม่ใช่ความล้มเหลวในการถอดรหัสในเอกสารนั้น

บทความที่เกี่ยวข้อง