J'ai eu un problème très similaire à résoudre récemment. Comme les autres réponses, j'ai aussi commencé à jouer avec HttpClient et autres. Cependant, ces bibliothèques exigent que vous connaissiez d'avance l'encodage du fichier que vous voulez télécharger. Sinon, la conversion du fichier HTML récupéré donnera des caractères illisibles.
Cette approche ne fonctionnera pas, car l'encodage du fichier HTML n'est spécifié que dans le fichier HTML lui-même. En fonction de la version HTML, l'encodage est spécifié de nombreuses manières différentes, comme l'en-tête XML, deux éléments de métabalises head différents, etc. Si vous suivez cette approche, vous devrez :
- Téléchargez le fichier et regardez le contenu pour déterminer l'encodage en analysant le contenu HTML.
- Téléchargez le fichier une seconde fois pour spécifier le bon encodage.
L'analyse syntaxique du contenu HTML pour trouver les chaînes d'encodage appropriées est particulièrement sujette aux erreurs. Je vous suggère plutôt de vous appuyer sur une bibliothèque telle que JSoup qui fera le travail pour vous. Ainsi, au lieu de télécharger le fichier via httpclient, utilisez JSoup pour récupérer le fichier à votre place. En outre, JSoup fournit une API intéressante pour accéder directement à différentes parties de la page HTML (par exemple, le titre de la page).