Esto es relativamente simple en el caso específico, pero bastante complicado en el caso general.
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));
La respuesta depende del Content-Type
encabezado de respuesta HTTP .
Este encabezado contiene información sobre la carga útil y puede definir la codificación de datos textuales. Incluso si asume tipos de texto , es posible que deba inspeccionar el contenido en sí mismo para determinar la codificación de caracteres correcta. Por ejemplo, consulte la especificación HTML 4 para obtener detalles sobre cómo hacer eso para ese formato en particular.
Una vez que se conoce la codificación, se puede usar un InputStreamReader para decodificar los datos.
Esta respuesta depende de que el servidor haga lo correcto: si desea manejar casos en los que los encabezados de respuesta no coinciden con el documento, o las declaraciones del documento no coinciden con la codificación utilizada, esa es otra fuente de información.