httpget.setHeader("charset", "utf-8");
не имеет никакого смысла.
Кодировка определяется BasicResponseHandler
.Если кодировка ответа не указана в заголовке Content-Type
(как в вашем случае), BasicResponseHandler
предполагает, что оно равно ISO-8859-1
, и его нельзя настроить.
Итак, вам нужно реализовать свой собственный ResponseHandler
, который использует другую кодировку по умолчанию, что-то вроде этого:
ResponseHandler<String> responseHandler = new ResponseHandler<String>() {
public String handleResponse(final HttpResponse response)
throws HttpResponseException, IOException {
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() >= 300) {
throw new HttpResponseException(statusLine.getStatusCode(),
statusLine.getReasonPhrase());
}
HttpEntity entity = response.getEntity();
return entity == null ? null : EntityUtils.toString(entity, "UTF-8");
}
}