2010-08-23 16 views
1

j'utilise suit le code pour obtenir contenu de la page:comment détecter le jeu de caractères WebPage et obtenir le contenu de la page?

URL url=new URL("http://www.google.com.hk/intl/zh-CN/privacy.html"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream())); 
for(String line=reader.readLine();line!=null;line=reader.readLine()){ 
    System.out.println(line); 
} 
reader.close(); 

page: http://www.google.com.hk/intl/zh-CN/privacy.html charset est "UTF-8", mais mon charset par défaut du système est "GBK", donc, ce code ne peut pas bon type.

je sais, je peux écrire un charsetname dans le constructeur InputStreamReader:

new InputStreamReader(url.openConnection().getInputStream(),"UTF-8") 

il est sera ok, mais je veux savoir:

comment détecter charset et obtenir le contenu de la page? (pas envoyer deux demandes mieux)

une bibliothèque de Java peut le faire? (Obtenir le contenu Web, et ne nécessitent pas mis charsetname)

Merci pour l'aide :)

Répondre

1

Il n'y a vraiment aucun moyen facile de détecter le charset approprié. Vous pouvez espérer que la page Web qui vous intéresse déclare le jeu de caractères à l'aide d'une balise <meta charset="utf-8">. Lorsque vous détectez cette balise, vous pouvez changer le jeu de caractères de votre analyse syntaxique.

Il existe également certaines bibliothèques qui s'efforcent de détecter le jeu de caractères, par exemple http://jchardet.sourceforge.net/.