ຂໍ້ຜິດພາດການເຂົ້າລະຫັດຕົວອັກສອນ 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 ວ່າງເປົ່າອະນຸຍາດໃຫ້ມີການກວດພົບ ແລະພຶດຕິກຳສຳຮອງຕາມເອກະສານ; charset HTTP ທີ່ຮູ້ຈັກ ແລະຖືກຕ້ອງຄວນຖືກສົ່ງຕໍ່ຢ່າງເຈດຕະນາ. URI ພື້ນຖານໃຫ້ບໍລິບົດສຳລັບລິ້ງທີ່ກ່ຽວຂ້ອງ.
ເມື່ອໄບຕ໌ຖືກຖອດລະຫັດຜິດແລ້ວ ການແຍກ String ຜົນລັບດ້ວຍ charset ອື່ນບໍ່ສາມາດກູ້ຂໍ້ຄວາມເດີມຄືນ. ກັບໄປຫາໄບຕ໌ ແລະເມຕາດາຕາຂອງການຕອບສະໜອງ. ຍັງປຽບທຽບສິ່ງທີ່ໄດ້ຮັບ: ໜ້າເຂົ້າສູ່ລະບົບ ຫຼືການປະຕິເສດຂອງພຣັອກຊີອາດເປັນເອກະສານທີ່ແຕກຕ່າງກັນທັງໝົດຈາກໜ້າທີ່ຮ້ອງຂໍ ບໍ່ແມ່ນຄວາມລົ້ມເຫຼວຂອງການຖອດລະຫັດໃນນັ້ນ.