来自URL的Java InputStreamReader不编码“Umlaute”

时间:2017-08-02 10:14:50

标签: java html url inputstreamreader

我尝试从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的标题中,charset的信息说ISO_8859_1。 UTF-8也不起作用。 有谁有想法该怎么办?

1 个答案:

答案 0 :(得分:0)

在网站中,Umlaute被解码为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);
}