Récupérer le contenu d'un site dans un String avec le bon encodage
Bonjour,
je souhaite récupérer le contenu d'une page web pour le mettre dans un String.
Voici une méthode que j'ai trouvé sur internet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| /**
* Méthode permettant d'aspirer le contenu d'un site.
*
* @param url url du site
* @return contenu sous forme de chaines de caractères.
*/
private static String getData(URL url) {
// La fonction pour récupérer le code source de la page...
URLConnection conn = null;
InputStreamReader in;
BufferedReader data;
String line;
StringBuffer buf = new StringBuffer();
try {
conn = url.openConnection();
conn.connect();
in = new InputStreamReader(conn.getInputStream());
data = new BufferedReader(in);
while ((line = data.readLine()) != null)
buf.append(line + "\n");
return buf.toString();
} catch (IOException e) {
throw new RuntimeException(e);
}
} |
Si j'écris :
Code:
1 2 3 4
| URL http = new URL("http://www.lequipe.fr/");
String fluxHtml = getData(http);
System.out.println("page web : " + fluxHtml); |
le contenu de la page web s'affiche bien.
Par contre, avec l'URL http://fr.wikipedia.org/wiki/Commune...a_Haute-Vienne, tous les caractères sont encodés bizzarement.
Voici le contenu de ma console (cf. capture d'écran http://www.servimg.com/image_preview.php?i=6&u=12014371) alors que via mon navigateur, j'obtiens un contenu de page commençant par :
Code:
1 2 3 4 5 6 7 8 9 10
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="MediaWiki 1.15alpha" />
<meta name="keywords" content="Communes de la Haute-Vienne,Limousin,Haute-Vienne,Communes de France,2003,2004,Aixe-sur-Vienne,Ambazac,Anciennes communes de la Haute-Vienne,Arnac-la-Poste,Augne" />
<link rel="alternate" type="application/x-wiki" title="Modifier" href="/w/index.php?title=Communes_de_la_Haute-Vienne&action=edit" />
<link rel="edit" title="Modifier" href="/w/index.php?title=Communes_de_la_Haute-Vienne&action=edit" />
<link rel="apple-touch-icon" href="http://fr.wikipedia.org/apple-touch-icon.png" /> |
Sur d'autres pages, seuls les accents sont mal encodés.
Comment puis-je faire pour récupérer le contenu HTML comme les navigateurs en étant bien interprété ????
Comment puis-je intervenir sur l'encodage ?
Y-a-t-il une solution à mon problème ?
Merci,
F.