Это относительно просто в конкретном случае, но довольно сложно в общем случае.
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 spec для получения подробной информации о том, как сделать это для этого конкретного формата.
Как только кодировка известна, InputStreamReader может использоваться для декодирования данных.
Этот ответ зависит от того, что сервер делает правильно: если вы хотите обрабатывать случаи, когда заголовки ответа не соответствуют документу или объявления документа не соответствуют используемой кодировке, это еще один способ рыба.