Sonderzeichen aus HTML lesen

cojack20

Mitglied
Hallo,

ich lese mit Hilfe des folgenden Codes eine HTML Seite aus:

Code:
			url = new URL( url_String );
			urlConnection = url.openConnection();

			urlConnection.setAllowUserInteraction(false);

			InputStream urlStream = url.openStream();

			byte b[] = new byte[1000];
			int numRead = urlStream.read(b);
			String content = new String(b, 0, numRead);
			String newContent = "";

			while (numRead != -1) {
				numRead = urlStream.read(b);
				if (numRead != -1) {
					newContent = new String(b, 0, numRead);
					content += newContent;
				}
			}

			urlStream.close();

naja und dieser Code killt mir alle deutschen Sonderzeichen. Ich verstehe aber nicht wie ich das korrigiere?!

Kann mir jemand helfen
 
Ich denke das wird am Charset liegen.

Du musst aus dem Header der Seite das Charset auslesen (oder einfach ein festes annehmen) und dieses dann für
Java:
new String(b, 0, numRead, charSetName);
benutzen.
 
Zuletzt bearbeitet:
hallo,

das funktioniert aber irgendwie nicht

Code:
String content = new String(b, 0, numRead, "UTF-8");


Auf jeden Fall bei den deutschen Sonderzeichen.

Bitte um Hilfe (ich habe auf jeden Fall nur deutsche Sonderzeichen).
 
Doch geht man muss es natürlich bei beiden Strings ersetzen:

Code:
url = new URL( url_String );
			urlConnection = url.openConnection();

			urlConnection.setAllowUserInteraction(false);

			InputStream urlStream = url.openStream();

			byte b[] = new byte[1000];
			int numRead = urlStream.read(b);
			String content = new String(b, 0, numRead, "UTF-8");
			String newContent = "";

			while (numRead != -1) {
				numRead = urlStream.read(b);
				if (numRead != -1) {
					newContent = new String(b, 0, numRead, "UTF-8");
					content += newContent;
				}
			}

			urlStream.close();

DAS funktioniert !!

SUPER DANKE
 
Trotzdem solltest du einen StringBuilder bzw StringBuffer benutzen um die Strings zu verketten. Diese mit + zu verketten ist einfach zu langsam.

Und anstatt alles selbst so auszulesen könntest du es auch mit einem BufferedReader probieren:
Java:
        BufferedReader in = new BufferedReader(
                                new InputStreamReader(
                                urlConnection.getInputStream()));
        String inputLine;

        while ((inputLine = in.readLine()) != null) {
            System.out.println(inputLine);
        }
 
Zurück