Gwallau amgodio cymeriadau jsoup ar ôl lawrlwytho drwy brocsi
Diagnoswch gymeriadau cymysg ar dudalen a lwythwyd drwy brocsi drwy gadw gwybodaeth amgodio'r ymateb trwy'r dosrannu HTML.
Mae'r dudalen yn llwytho drwy'r procsïwr, ond mae llythrennau acennog yn dychwelyd yn gymysg. Cyn newid procsïwyr, darganfyddwch y lle cyntaf y mae beitiau'r ymateb yn dod yn Java String. Gall InputStreamReader heb charset penodol wneud y penderfyniad hwnnw cyn i jsoup weld y ddogfen.
Pan fydd jsoup yn trin y caffaeliad, cadwch yr ymateb gyda'i gilydd nes y dosrannu:
Connection.Response response = Jsoup
.connect("https://www.example.com/catalog")
.proxy("proxy.example", 8080)
.execute();
Document page = response.parse();Mae API'r ymateb yn datgelu gwybodaeth charset sy'n deillio o Content-Type. Gall hefyd dderbyn trosysgrifiad charset penodol pan fyddwch wedi sefydlu bod datganiad'r gweinydd yn anghywir. Nid yw cyfeiriad procsïwr ar ei ben ei hun yn dweud pa amgodiad cymeriadau y mae'r ddogfen yn ei ddefnyddio. Os oes angen cymhariaeth gyhoeddus a ganiateir heb gyfrif procsïwr, disodlwch westeiwr a phorth HTTP yr enghraifft ag ymgeisydd o'r rhestr procsïwyr HTTP, gan gadw'r un gwiriadau amgodio.
Os bydd cleient HTTP arall yn cyflenwi InputStream, mae gorlwytho dosrannu llif jsoup yn derbyn enw charset a URI sylfaen. Mae charset null yn caniatáu ei ganfyddiad a'i ymddygiad wrth gefn dogfennedig; dylid cludo charset HTTP hysbys a chywir yn fwriadol. Mae'r URI sylfaen yn rhoi cyd-destun ar gyfer dolenni cymharol.
Unwaith y bydd beitiau wedi'u datgodio'n anghywir, nid yw dosrannu'r String canlyniadol gyda charset arall yn adfer y testun gwreiddiol. Ewch yn ôl at y beitiau a metadata'r ymateb. Cymharwch hefyd yr hyn a dderbyniwyd: gall tudalen mewngofnodi neu wrthodiad procsïwr fod yn ddogfen hollol wahanol i'r dudalen a ofynnwyd amdani, yn hytrach na methiant datgodio ynddi.