Caruso_Nix
Mitglied
Wenn ich System.getProperty("file.encoding"); verwende, dann bekomme ich den Codepage Cp1252.
wenn ich p.getInputStream(),"Cp1252" nehme, werden keine Umlaute dargestellt.
Verwende ich dagegen den Cp850, werden diese dargestellt.
Nun ist das Problem, dass ich mein Programm Betriebssystemunabhängig gestalten muss. Also muss ich den Codepage auslesen. aber wie bekomme ich den richtigen?
in der Windows 2000-Registry gibt es unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
zwei Einträge
OEMCP = 850 --> hier greift die DOS-Konsole zu
ACP = Cp1252 --> hier greift System.getProperty("file.encoding"); zu
Hat jemand eine Idee, wie ich die Codepage dynamisch ermitteln kann? hier muss ich auch Linux abdecken
wenn ich p.getInputStream(),"Cp1252" nehme, werden keine Umlaute dargestellt.
Verwende ich dagegen den Cp850, werden diese dargestellt.
Nun ist das Problem, dass ich mein Programm Betriebssystemunabhängig gestalten muss. Also muss ich den Codepage auslesen. aber wie bekomme ich den richtigen?
in der Windows 2000-Registry gibt es unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
zwei Einträge
OEMCP = 850 --> hier greift die DOS-Konsole zu
ACP = Cp1252 --> hier greift System.getProperty("file.encoding"); zu
Hat jemand eine Idee, wie ich die Codepage dynamisch ermitteln kann? hier muss ich auch Linux abdecken
Code:
try {
final Process p =
Runtime.getRuntime().exec("cmd.exe /c dir c:");
String encoding_system = System.getProperty("file.encoding");
String encoding = "850";
StringBuffer sb = new StringBuffer();
BufferedReader br = new BufferedReader(new
InputStreamReader(p.getInputStream(),encoding));
while((line = br.readLine()) != null)
{
sb.append(line + System.getProperty("line.separator"));
}
System.out.println(sb.toString());
}
catch(IOException ioe)
{
System.out.println("IOException");
}