2017-08-02 10 views
0

URLからHTMLコンテンツを読み込もうとしています。コンソールにコンテンツを印刷したくないときは、ä、ö、üのような「Umlaute」が間違って表示されます。URLからJava InputStreamReaderが "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

あなたのコンソールはUTF-8またはISO_8859_1をサポートしていませんか? – Jens

+0

結果が正しく表示されています。ただし、「ä」は「ä」と表されます。 – saka1029

答えて

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); 
} 
+0

はい、それはまさに私が気づいたものです。 –

+1

'StringEscapeUtils'はどこから来たのかを述べるべきです:それはJDKの一部ではありません。 –

+0

ありがとうございました! maven依存関係にlang3を追加しました! – Sigma

関連する問題