HTML-страница имеет формат UTF-8 и может использовать арабские символы и тому подобное.Но эти символы выше Unicode 127 все еще закодированы как числовые объекты, такие как ú
.Accept-Encoding не будет помогать и загружаться, так как UTF-8 совершенно прав.
Вы должны декодировать объекты самостоятельно.Что-то вроде:
String decodeNumericEntities(String s) {
StringBuffer sb = new StringBuffer();
Matcher m = Pattern.compile("\\&#(\\d+);").matcher(s);
while (m.find()) {
int uc = Integer.parseInt(m.group(1));
m.appendReplacement(sb, "");
sb.appendCodepoint(uc);
}
m.appendTail(sb);
return sb.toString();
}
Кстати, эти сущности могут происходить из обработанных HTML-форм, поэтому на стороне редактирования веб-приложения.
Послерассматриваемый код:
Я заменил DataInputStream на (Buffered) Reader для текста.InputStreams читает двоичные данные, байты;Читатели текстовые, струнные.InputStreamReader имеет в качестве параметра InputStream и кодировку и возвращает Reader.
try {
BufferedReader input = new BufferedReader(
new InputStreamReader(urlConn.getInputStream(), "UTF-8"));
StringBuilder strB = new StringBuilder();
String str;
while (null != (str = input.readLine())) {
strB.append(str).append("\r\n");
}
input.close();
} catch (IOException e) {
e.printStackTrace();
}