# Umlaute über Konsoloe ein- und ausgeben



## Backwardsman (12. Mrz 2008)

Es gibt zwar schon ähnliche Threads aber die behandeln alle nur die Ausgabe von Umlauten auf der Konsole. Ich möchte allerdings eingegebene Parameter (über den args-Parameter der main-Methode) einlesen, verarbeiten und auch Umlaute auf der Konsole ausgeben.

Ich starte mein Programm folgendermaßen:

```
java -Dconsole.encoding=CP850  meinProgramm "öüäÖÜÄß"
```
in der ersten Zeile der main-Methode mache ich folgendes:

```
System.setOut( new PrintStream( new FileOutputStream(FileDescriptor.out), false, "CP850"));
```
aber egal ob

```
System.out.println(args[0]);
```
oder 

```
System.out.println(new String(args[0].getBytes("CP850")));
```
beides produziert merkwürdige Sonderzeichen... statt einen "ö" wird beispielsweise ein "%"-Zeichen eingelesen.

Was kann ich noch tun damit die Sonderzeichen von der Konsole korrekt an mein Programm übermittelt werden??

Die Java-interne Ausgabe von Umlauten, also z.b. System.out.println("öüäÖÜÄß") erfolgt allerdings korrekt.

Danke!


----------



## quippy (12. Mrz 2008)

Das Coding der Windows DOS Box sollte "cp1252" sein - oder? Probier das mal
Zudem sollte man dabei System.out und System.in nicht umbiegen.


----------



## Backwardsman (12. Mrz 2008)

also das konsolen-coding ist ersteinmal "null", zumindest nach dem aufruf von System.getProperty("console.encoding"). auch wenn ich mit den codings rumspiele so schaffe ich es nur mit dem cp850-coding zumindest umlaute korrekt ausgeben zu können, bei cp1252 funktioniert gar nix!? ... ich glaub ich habe jetzt schon alle kombinationsmöglichkeiten getestet schaffe es einfach nicht umlaute richtig einzulesen!?


----------



## Backwardsman (12. Mrz 2008)

also ich habe es jetzt hinbekommen, dass ich umlaute, die über die konsole eingegeben werden (mittels System.in.red()) korrekt gelesen und wieder ausgegeben werden können.

jetzt hängt es nur noch an dem args-array der main methode!?


----------



## anfänger15 (12. Mrz 2008)

```
BufferedReader in= new BufferedReader(
                  new InputStreamReader(System.in, "Cp850"));
```

So sollte das einlesen funktionieren.

Und damit werden die Umlaute aus args[0] richtig au der Konsole ausgegeben.

```
import java.io.*;

class Test{

public static void main(String[] args){
	
try{
PrintWriter out= new PrintWriter(
                  new OutputStreamWriter(System.out, "Cp850"));
                  out.println(args[0]);
                  out.flush();
                  out.close();
    }catch (java.io.UnsupportedEncodingException e){
    	}              
}
}
```


----------



## Backwardsman (12. Mrz 2008)

ok ok... fehler gefunden.... die batch-datei von welcher ich das programm aus gestartet habe war im falschen format und hat demnach auch die umlaute schon falsch an die main-methode übertragen!

trotzdem danke für die bemühungen!


----------

