Errori di codifica dei caratteri in jsoup dopo un download tramite proxy
Diagnostica i caratteri confusi in una pagina caricata tramite proxy conservando le informazioni di codifica della risposta durante l'analisi HTML.
La pagina viene caricata tramite il proxy, ma le lettere accentate tornano confuse. Prima di cambiare proxy, individua il primo punto in cui i byte della risposta diventano una String Java. Un InputStreamReader senza charset esplicito può prendere quella decisione prima che jsoup veda il documento.
Quando jsoup gestisce il recupero, tieni insieme la risposta fino all'analisi:
Connection.Response response = Jsoup
.connect("https://www.example.com/catalog")
.proxy("proxy.example", 8080)
.execute();
Document page = response.parse();L'API di risposta espone informazioni sul charset derivate dal Content-Type. Può anche accettare una sostituzione esplicita del charset quando hai stabilito che la dichiarazione del server è errata. Un indirizzo proxy da solo non ti dice quale codifica dei caratteri usi il documento. Se ti serve un confronto consentito di una pagina pubblica senza account proxy, sostituisci l'host HTTP e la porta dell'esempio con un candidato dalla lista di proxy HTTP, mantenendo gli stessi controlli di codifica.
Se un altro client HTTP fornisce un InputStream, l'overload di analisi di flusso di jsoup accetta un nome di charset e un URI di base. Un charset null consente il rilevamento e il comportamento di fallback documentati; un charset HTTP noto e corretto va trasferito deliberatamente. L'URI di base fornisce il contesto per i link relativi.
Una volta che i byte sono stati decodificati in modo errato, analizzare la String risultante con un altro charset non recupera il testo originale. Torna ai byte e ai metadati della risposta. Confronta anche ciò che è stato ricevuto: la pagina di accesso o il rifiuto di un proxy può essere un documento del tutto diverso dalla pagina richiesta, anziché un errore di decodifica in essa.