Java UTF8 InputStream decodieren

Andreas_0815

Mitglied
Hallo Zusammen,

ich lese mithilfe eines GetMethod-Objektes des Jakarta HttpComponents-Projektes eine Website aus. Ich bekomme von dem GetMethod einen InputStream mit dem Quelltext der Website. Mein Firefox zeigt mir an, dass die Website UTF8 kodiert sei.
(Wenn ich einfach den InputStream auslese, erhalte ich bei ä,ü,ö... komische Zeichen)
Also hab ich mal gegoogled und diesen Code gefunden:
Code:
BufferedReader website = new BufferedReader(new InputStreamReader(site,"UTF8"));

Leider erhalte ich jetzt immer noch komische Zeichen anstelle der deutschen Umlaute, aber die Zeichen sehen anders aus als ohne den UTF8-Zusatz im obigen Code...

Weiß jemand Rat?

thx schon mal!
Andreas
 
Lass dir mal den Quellcode anzeigen (Rechtsklick - Quelltext anzeigen) und schau da ob was von Charset steht.

Oder versuch mal UTF-8 als Schreibweise.
 
Im Quellcode steht charset=utf-8.

Die Schreibweise "UTF-8" hat zwar funktioniert (also keine Exception wegen eines falschen Formates) aber das Ergebnis ist das gleiche wie unten beschrieben.

MfG

EDIT:
Ich habe grad festgestellt, dass wenn ich über getMethod.getResponseBodyAsString() den Quellcode ausgebe, werden manche Umlaute richtig in der Console (von Eclipse) ausgeben (also "ü" = "ü") und an anderer Stelle nicht ("ü" = "u?"). Es kann sich dabei aber beide Male durchaus um den selben Umlaut handeln.
 
Zuletzt bearbeitet:
Hi versuchs mal hiermit, vielleicht hilft das:
Code:
String decoded = java.net.URLDecoder.decode("Input", "UTF-8"); 
//Input soll hier den String darstellen den du über den BufferedReader mittels ReadLine() einsammeln kannst :)

grüße,
Clash
 
Hi,
lad dir mal die StringEscapeUtils bibliothek von apache.org (commons) und probiers mal so
Code:
StringEscapeUtils.escapeHtml(unescapedHtmlString);
vielleicht bringt das was :)

grüße,
clash
 
Wie sieht denn dein Code nun aus?

Kann eventuell deine Konsole kein UTF-8 darstellen?
 
Hallo,

meine Eclipse-Konsole kann die Umlaute anzeigen, denn manche Umlaute werden auch richtig konvertiert, manche aber nicht. Und das auf ein und derselben Website mit einer Konvertierung für den kompletten Stream! (komisch, oder?)

Code:
InputStream site = getMethod.getResponseBodyAsStream();
BufferedReader website = new BufferedReader(new InputStreamReader(site));
website.readLine();   //damit lese ich dann natürlich die einzelnen Zeilen ein
Bei diesem Code sind alle Umlaute durch "komische" Zeichen ersetzt. Also:

Code:
nputStream site = getMethod.getResponseBodyAsStream();
BufferedReader website = new BufferedReader(new InputStreamReader(site, "UTF-8"));
website.readLine();   //damit lese ich dann natürlich die einzelnen Zeilen ein
Jedoch werden dann alle Umlaute zu dem Vokal + ein Fragezeichen: Bsp. "ü" zu "u?"

Die neue Idee von Clash muss ich noch ausprobieren.

MfG
 
Hallo Zusammen,

bei der Verwendung von:
Code:
StringEscapeUtils.escapeHtml(unescapedHtmlString);

wird mein ü zu Folgendem:
ü

Wenn ich den Stream schon mit Folgendem decodiere
Code:
BufferedReader website = new BufferedReader(new InputStreamReader(site, "UTF-8"));

erhalte ich durch StringEscapeUtils.escapeHtml(string) das hier:
"u & # 7 7 6 ;" (ohne Leerzeichen, wenn ich die weglasse, macht der Browser automatisch ein "ü" draus!)

versteht ihr das?
 
Zuletzt bearbeitet:
Hi,
probier mal bei deinen eclipse-Einstellungen unter General / Workspace den Punkt Text file encoding auf den Punkt other umzustellen und da dann UTF-8 wählen (falls du das nicht schon getan hast)
jetzt müsste zumindest alles korrekt angezeigt werden...
grüße,
clash
 
Zurück