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