У меня ошибка при загрузке данных из веб-службы в хранилище данных. Проблема заключается в том, что XML, возвращаемый веб-службой, содержит символы UTF-8, и механизм приложений неправильно их интерпретирует. Это делает их как ??.
Я вполне уверен, что отследил это до запроса URL Fetch. Основной поток: Очередь задач -> получить данные веб-службы -> поместить данные в хранилище данных, так что это определенно не имеет ничего общего с кодировкой запроса или ответа основного сайта.
Я разместил сообщения журнала до и после Apache Digester, чтобы выяснить, не в этом ли причина, но решил, что это не так. Вот что я увидел в логах:
строка из XML: "Doppelg nger"
После обработки варочного котла: "Doppelg ?? nger"
Вот мой код извлечения URL:
public static String getUrl(String pageUrl) {
StringBuilder data = new StringBuilder();
log.info("Requesting: " + pageUrl);
for(int i = 0; i < 5; i++) {
try {
URL url = new URL(pageUrl);
URLConnection connection = url.openConnection();
connection.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
data.append(line);
}
reader.close();
break;
} catch (Exception e) {
log.warn("Failed to load page: " + pageUrl, e);
}
}
String resp = data.toString();
if(resp.isEmpty()) {
return null;
}
return resp;
Есть ли способ заставить это распознать ввод как UTF-8. Я протестировал загружаемую страницу, и валидатор W3c распознал ее как действительную utf-8.
Проблема только на серверах приложений, она отлично работает на сервере разработки.
Спасибо