Apache Httpclient + cpdetector (для определения кодировки)
Только он достаточно тяжёлый и ошибается :)
Алгоритм определения кодировки следующий:
1. Из заголовков сервера (Httpclient), если нет, то:
2. Из html (регуляркой вытаскиваете тэг), если нет, то:
3. cpdetector, если нет, то без понятия :)
А вообще задача довольно не тривиальная. И учтите, что получив byte[] массив от Httpclient — не конвертируйте его в String, иначе похерите кодировку :)