これは特定のケースでは比較的簡単ですが、一般的なケースではかなりトリッキーです。
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://stackoverflow.com/");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println(EntityUtils.getContentMimeType(entity));
System.out.println(EntityUtils.getContentCharSet(entity));
答えは、Content-Type
HTTP応答ヘッダーによって異なります。
このヘッダは、ペイロードに関する情報が含まれており、可能性があるテキストデータの符号化を定義します。テキストの種類を想定している場合でも、正しい文字エンコードを判別するためにコンテンツ自体を検査する必要がある場合があります。たとえば、その特定の形式でそれを行う方法の詳細については、HTML 4仕様を参照してください。
エンコーディングがわかったら、InputStreamReaderを使用してデータをデコードできます。
この答えは、サーバーが正しいことを行っているかどうかに依存します。応答ヘッダーがドキュメントと一致しない場合、またはドキュメントの宣言が使用するエンコードと一致しない場合に対処する場合は、別のやかんです。