# Probleme mit Umlauten



## Daniel.Deng (13. Apr 2009)

Hallo alle,

Ich habe so ein Class geschrieben:

public class UmlautTest{
public static void main(String[] args){
char[] umlaute = {'ä', 'ö', 'ü', 'ß'};
System.out.println(umlaute);
}
}

Dann sehe ich in Console sowas: ??ü?

Ich benutze Eclipse. Die .java Datei ist von UTF-8 codiert.
Könnt ihr mir Tipps dafür geben, wie Java richtige Umlaute sowie andere UTF-8 Zeichen zeigt? Vielen Dank!


----------



## faetzminator (13. Apr 2009)

"Java" macht das wunderbar - aber ich geh davon aus, dass du Win verwendest (und das Programm in der Eingabeaufforderung öffnest), und die verwenden nunmal ISO. Man könnte den String aber umcodieren.


----------



## Daniel.Deng (13. Apr 2009)

So habe ich versucht:

String abc = new String("ö".getBytes("ISO-8859-1"),"UTF-8");
System.out.println(abc);

Aber hab' trotzdem "?" bekommen.

Wie kann man genau die Zeichen zu UTF-8 umcodieren?

Danke!


----------



## faetzminator (13. Apr 2009)

wär es nicht eher
new String("ö".getBytes("UTF-8"),"ISO-8859-1");
?


----------



## Daniel.Deng (13. Apr 2009)

Functioniert immer noch nicht 

Eigentlich arbeiten wir grade an einem Projekt. Wir benutzen Apache MINA als Socket Server. Mit Sockettest haben wir test gemacht, und der Server funktioniert gut ausser Umlautproblemen. Dann haben wir entdeckt, dass im Java selbe so ein Problem gibt...

Wir haben nie mit der deutschen Sprache ein System gemacht. Mit Chinesisch, Japanisch und Koreanisch kein Problem. Und sehr merkwuerdig, mit "ü" auch kein Problem....


----------



## faetzminator (13. Apr 2009)

Was macht ihr genau? Wo wird welches Format verwendet und wo ausgegeben?


----------



## Daniel.Deng (13. Apr 2009)

faetzminator hat gesagt.:


> Was macht ihr genau? Wo wird welches Format verwendet und wo ausgegeben?


 

Ich weiss nicht ob du irgendwas mit Apache MINA gemacht hast.
Wir haben so einen IOFilter addiert:

config.getFilterChain().
addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));

und dann die Methode messageReceived() so implementiert:

public void messageReceived(IoSession ssn, Object msg) throws Exception { 
String ip = ssn.getRemoteAddress().toString();
System.out.println("===> Message From " + ip +" : " + msg + " --öäü"); 
ssn.write("Hello " + msg + " --öäü");
}
}

Dann der Client (Sockettest) bekommt nur : Hello BlaBlaBla --??ü.
Wir haben auch im Eclipse beim Server System.out.println() gemacht wie geschrieben. Aber wir bekommen in Console auch 
===> Message From /127.0.0.1:2304 BlaBlaBla --??ü.

Wir werden nachher die konkrete Protokol in messageReceived() implementieren. Aber nur wenn das Umlautproblem geloest wird, weil das System in deutscher Sprache sein soll.


----------



## Daniel.Deng (13. Apr 2009)

Nun hat's geklappt. Mein Console bei Eclipse und das JTextArea bei Sockettest haben beide Probleme mit Umlauten. Vielen Dank faetzminator!


----------

