# Windows-Konsole auslesen - Zeichenkodierung



## dirty-mg (19. Aug 2010)

Hallo liebe Leute,

ich starte von Java aus einen System-Befehl und lesen die Ausgabe des Prozesses aus. Dabei besteht nun das Problem, dass Umlaute als Fragezeichen dargestellt werden. Hat jemand eine Idee woran das liegt und wie man das beheben kann?

Hier der Code:


```
Process process = new ProcessBuilder().command("ping", "www.google.de").redirectErrorStream(true).start();
Scanner scanner = new Scanner(process.getInputStream());
while ( scanner.hasNextLine() ) {
    String s = scanner.nextLine();
    if (s.trim().length() > 0) {
        System.out.println( s );
    }
}
```

Die Ausgabe erscheint folgendermaßen:

```
Ping www.l.google.com [74.125.39.99] mit 32 Bytes Daten:
Antwort von 74.125.39.99: Bytes=32 Zeit=27ms TTL=53
Antwort von 74.125.39.99: Bytes=32 Zeit=27ms TTL=53
Antwort von 74.125.39.99: Bytes=32 Zeit=27ms TTL=53
Antwort von 74.125.39.99: Bytes=32 Zeit=28ms TTL=53
Ping-Statistik f?r 74.125.39.99:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 27ms, Maximum = 28ms, Mittelwert = 27ms
```

In der Zeile hinter den 4 Ping-Antworten steht halt "f?r" anstatt "für".

Vielen Dank im Voraus.

Marcus


----------



## Steven Hachel (19. Aug 2010)

Huhu,

ersetze bitte mal die Zeile

```
Scanner scanner = new Scanner(process.getInputStream());
```
mit...

```
Scanner scanner = new Scanner(process.getInputStream(), "Cp850");
```


viele Grüße
Steven


----------



## DrZoidberg (20. Aug 2010)

Wenn du das Programm nicht in der IDE sondern in der Konsole starten willst, musst du aber ausserdem auch noch diese Zeile an den Anfang der main Methode setzen
[Java]System.setOut(new java.io.PrintStream(System.out, true, "cp850"));[/code]


----------



## dirty-mg (20. Aug 2010)

Super! Die Lösung von "Steven Hachel" funktioniert super, sowohl aus der IDE als auch aus der Konsole!!! Danke!


----------



## Steven Hachel (23. Aug 2010)

Gern geschehen


----------

