Я использую API, который кодирует немецкие умлауты в UTF-8.Мое приложение должно декодировать и кодировать эти символы.Кодирование не является проблемой и работает совершенно нормально.Чтобы добиться этого, я установил кодировку при создании нового StringEntity
и добавил его к запросу следующим образом:
HttpPost request = new HttpPost(getUrl);
if(useProxy) {
RequestConfig config = RequestConfig.custom()
.setProxy(proxy)
.build();
request.setConfig(config);
}
request.addHeader("APIKey", apiKey);
request.addHeader("Accept", "application/json");
request.addHeader("Content-type", "application/json; charset=UTF-8");
request.setEntity(new
StringEntity(JsonUtils.getJsonFromObject(nachricht), "UTF-8"));
Все специальные символы, такие как умляуты, отправляются и правильно сохраняются в серверной части.Однако когда я хочу получить эти данные, это приводит к некоторым ошибкам, которые выглядят следующим образом: ![enter image description here](https://i.stack.imgur.com/H1GTA.png)
Маленькие символы работают, но заглавные буквы - нет.Похоже, что ответ или HTTPGET-запрос имеет кодировку ISO_8859_1.Как я могу установить кодировку HTTPGET в UTF-8?Я уже пытался установить заголовок запроса следующим образом:
request.addHeader("Content-type", "application/json; charset=UTF-8");
И расшифровать содержимое ответа следующим образом:
byte[] bytes = EntityUtils.toString(responseEntity).getBytes();
String responseString = new String(bytes, "UTF-8");
Но поскольку кодировка ответа кажется неправильной, декодированиес UTF-8 приводит к ошибке ..