# Umlaute im Quellcode einer Website richtig darstellen



## mysterix (17. Nov 2013)

Hiho,
ich lade mir mithilfe folgenden Codes den Quellcode einer Seite in meine Android App:


```
url = new URL("www.test.de");
            String readLine = null;
            String sResult = null;
            StringBuilder quellcode = new StringBuilder();
            BufferedReader buffReader = new BufferedReader (new InputStreamReader (url.openStream (),"UTF-8"));
            while ((readLine = buffReader.readLine ()) != null) {
                if (sResult == null) {
                	quellcode.append(readLine);
                    
                }
                else {
                	//sResult = sResult + readLine;
                	quellcode.append(readLine);
                }                
            }
```

Dabei komm ich an den Punkt, dass er mir trotz aller Versuche, die ich unternommen habe, die Umlaute, also ä,ü,ö,, als komisches Fragezeichen mit schwarzem Viereck drum rum anzeigt. Gibt es für diesen Fall n stück Code, das ich dazwischen werfen kann?
Hab schon versucht mit .replace zu filtern. und mit


```
BufferedReader buffReader = new BufferedReader (new InputStreamReader (url.openStream (),"UTF-8"));
```

hab ichs auch versucht. Kein Erfolg. Ich hoffe jemand hat da Erfahrung? 

Vielen Dank,
Gruß,
MysteriX


----------



## dzim (18. Nov 2013)

Verwende die Apache-HttpClient-Bibliothek, die ist in (einer etwas älteren Form zwar), Teil von Android - vielleicht kann die es besser, als wenn du es in dem "von-Hand-Modus" lädst.

Und: Willst du die Seite im WebView darstellen? Dann wäre die ganze Aktion ein Overkill.


----------



## mysterix (18. Nov 2013)

Hi,
vielen Dank für die Antwort. Anzeigen möchte ich den Quellcode nicht. Ich parse den quelltext der seite nur nach dem Seitentitel und einem Link zu nem Bild. Wenn ich Zuhause bin, schau ich mir das mal an


----------



## BuckRogers (18. Nov 2013)

probier es mal mit "utf-16" 


```
BufferedReader buffReader = new BufferedReader (new InputStreamReader (url.openStream (),"UTF-16"));
```


----------



## dzim (19. Nov 2013)

Wie bereits gesagt: Verwende die Apache HttpClient API (Version 3 glaub ich), die Teil von Android ist!


```
HttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpGet getRequest = new HttpGet(uri);
HttpResponse response = null;
BufferedReader in = null;
try {
	/* TODO: DO SOMETHING WITH RESPONSE? */
	response = httpClient.execute(postRequest);
	in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()), 4096);
	String line = "";
	while ((line = in.readLine()) != null) {
		quellcode.append(readLine);
	}
} catch (Exception ex) {
	// do something
}
```

Soweit so klar, denke ich. Bis dahin unterscheidet sich der Code kaum und auch die Auswirkung wären änhlich. ABER: du kannst die Entity direkt auf Encoding überprüfen: _response.getEntity().getContentEncoding()_ - vorausgesetzt der Server bietet diese Information. Grundsätzlich aber würde ich immer empfehlen, bei HTTP-Operationen (auf Webseiten) diesen Weg zu gehen, anstatt den Low-Level-Ansatz zu verwenden.


----------

