2010-08-23 7 views
1

я использую следующий код, чтобы получить содержимое страницы:Как обнаружить кодировку WebPage и получить содержимое страницы?

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(); 

страницы: http://www.google.com.hk/intl/zh-CN/privacy.html кодировка «UTF-8», но мои системы по умолчанию набор символы «GBK», поэтому, эти коды не могут ввести право.

я знаю, я могу написать charsetname в InputStreamReader конструктору:

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

это будет хорошо, но я хочу знать:

как определить кодировку, и получить содержимое страницы? (лучше не отправлять два запроса)

любая библиотека java может это сделать? (Получить контент веб-страницы, и не нужно устанавливать charsetname)

спасибо за помощь :)

ответ

1

Там действительно нет простого способа определения подходящего кодовую. Вы можете надеяться, что интересующая вас веб-страница объявит кодировку с использованием тега <meta charset="utf-8">. Когда вы обнаружите этот тег, вы можете переключить кодировку вашего синтаксического анализа.

Есть также некоторые библиотеки, которые пытаются обнаружить кодировку, например http://jchardet.sourceforge.net/.