Проксигоор татахын дараах 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-аар задлан шинжлэх нь анхны текстийг сэргээхгүй. Байтууд ба хариултын мета өгөгдөл рүү буц. Хүлээн авсныг ч харьцуул: проксийн нэвтрэх хуудас эсвэл татгалзал нь хүссэн хуудаснаас огт өөр баримт байж болно, дотор нь декодчилолын алдаа биш.