Zeichensatz bei externen Prozessen

smathedark

Mitglied
Hallo,
ich rufe aus meiner JavaApplikation heraus das Windows Ping auf.
Dies geschieht über die Klasse ProcessBuilder. Die Ausgabe nehme ich über einen InputStream der in einen BufferedReader einliest entgegen. Leider ist der String den ich durch den BufferedReader erhalte nicht der, den ich auf der Windowskosole sehe.
Beim Aufruf von Ping meldet das das Programm "Ping wird ausgeführt für IP ...".
In der Windowskonsole sehe ich die Umlaute, in meinem BufferedReader werden diese durch ? dargestellt.
Ich habe schon die getBytes() Methode des Strings mit verschiedenen CharacterSets versucht, diese heben das ? aber nicht auf.
Kann es sein, dass ich dem Inputstream schon das richtige CharacterSet mitteilen muss? Irgentwie muss ich doch die selbe ausgabe wie diie Windowskonsole hinbekommen.

Hier noch ein wenig Code

Code:
processBuilder = new ProcessBuilder(call.getCall()); // Call ist eine eigene Klasse die den Aufrufstring des externen Programm darstellt

process = processBuilder.start();
InputStream is = process.getInputStream();
isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
line = br.readLine();
System.out.println(line);

Danke schonmal
 
Versuchs mal mit dem InputStreamReader über dem InputStream und vor dem BuffereReader. Beim InputStreamReader kannst du das Charset einstellen.
 
Jo Danke,
das mit dem InputStreamReader hat funktioniert. Als Zeichensatz musste ich Cp850 einstellen und schon war alles wie es sein sollte :-)
 
Zurück