Isso é relativamente simples no caso específico, mas bastante complicado no caso geral.
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));
A resposta depende do Content-Type
cabeçalho da resposta HTTP .
Este cabeçalho contém informações sobre a carga útil e pode definir a codificação de dados textuais. Mesmo que você assuma tipos de texto , pode ser necessário inspecionar o próprio conteúdo para determinar a codificação correta dos caracteres. Por exemplo, consulte a especificação do HTML 4 para obter detalhes sobre como fazer isso para esse formato específico.
Depois que a codificação é conhecida, um InputStreamReader pode ser usado para decodificar os dados.
Essa resposta depende do servidor fazer a coisa certa - se você deseja lidar com casos em que os cabeçalhos de resposta não coincidem com o documento ou as declarações do documento não coincidem com a codificação usada, isso é outra chaleira de peixe.