Java 来自 URL 的 InputStreamReader 不编码 "Umlaute"

Java InputStreamReader from URL does not encode "Umlaute"

我尝试从 URL 中读取 html 内容。当我不想将内容打印到控制台时 "Umlaute" 比如 ä, ö, ü 显示错误。

URL url = new URL("http://www.lauftreff.de/laeufe/halbmarathon-1-2017.html");
URLConnection conn = url.openConnection();
InputStreamReader input = new InputStreamReader(conn.getInputStream(),StandardCharsets.ISO_8859_1);
BufferedReader bi = new BufferedReader(input);
String inputLine;
while((inputLine = bi.readLine()) != null){
    System.out.println(inputLine);
}

在 html 的 header 中,字符集的信息显示 ISO_8859_1。 UTF-8 也不起作用。 有没有人知道该怎么做?

在网站中,变音符号被解码为 HTML 个实体。所以你需要解码那些。下面的代码应该可以工作,但未经测试。

URL url = new URL("http://www.lauftreff.de/laeufe/halbmarathon-1-2017.html");
URLConnection conn = url.openConnection();
InputStreamReader input = new InputStreamReader(conn.getInputStream(),StandardCharsets.ISO_8859_1);
BufferedReader bi = new BufferedReader(input);
String inputLine;
while((inputLine = bi.readLine()) != null){
    inputLine = StringEscapeUtils.unescapeHtml4(inputLine);
    System.out.println(inputLine);
}