# HTTP Request Umlaut Problem



## Soccertrash (18. Aug 2008)

Hallo zusammen,

ich sende einen HTTP Request (über Socket) an eine Webpage und bekomme auch alle Daten richtig zurück. Fast alle. Umlaute werden falsch dargestellt. 
Das Wort "zurück" hab ich mal "char" - weise ausgegeben. Ebenso den gecasteten int wert zum char wert
0: char: z int: 122
1: char: u int: 117
2: char: r int: 114
3: char: Ã int: 195
4: char: ¼ int: 188
5: char: c int: 99
6: char: k int: 107

Das ganze wird letztendlich in einem JEditorPane ausgegeben:

```
JEditorPane editor = new JEditorPane("text/html",result);
```

Ich hab schon versucht, das ganze mit URLDecoder.decode(string,"iso-8859-1") zu dekodieren, hat aber nicht funktioniert. Laut den Meta Infos der Website ist das charset nämlich iso-8859-1. Ich glaub, ich bring hier auch Encoding und Charset durcheinander?


----------



## HoaX (18. Aug 2008)

der text  ist auch nicht url-encoded, ich würde ehr sagen utf8.
auf den http-header würde ich mich nicht verlassen, vorallem bei php-seiten kommt es da oft zu widersprüchen.
am einfachsten ist es sicherlich mit icu4j das charset bestimmen zu lassen

ansonsten very dirty hack: string = new String(string.getBytes(), "UTF-8")


----------



## Soccertrash (19. Aug 2008)

Die Bibliothek icu4j hat mir weiter geholfen. Leider ist sie etwas groß im Vergleich zu meinem Programm (5000 kb zu 50 kb)  Aber es funktioniert  
Hier der Code zum Nachbauen:


```
String input="abcd";
String ret; 
CharsetDetector cd = new CharsetDetector();
byte[] retB=input.getBytes();
cd.setText(retB);
CharsetMatch csm=cd.detect();
ret=csm.getString();
```


----------



## byte (19. Aug 2008)

Guck Dir das mal an: http://commons.apache.org/codec/


----------

