2011-11-15 41 views
0

我想要做的是读取Windows环境变量%APPDATA%。我有一些Umlauts的严重问题,例如如果APDATA设置为"ÄÄÄ"我会得到像"'''"阅读Windows环境变量(编码/字符集问题)

这里是我的代码:

final Process p = Runtime.getRuntime().exec("cmd.exe /C echo %APPDATA%"); 
final BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); 
String buffer; 
if((buffer = br.readLine()) != null) { 
    return buffer; 
} 

如果我打印出

String encoding_system = System.getProperty("file.encoding"); 

我越来越Cp1252。我试图告诉InputStreamReader系统编码,但没有任何变化。

回答

1

这是一种试图获取环境变量值的脆弱方式。你最好用System.getEnv()。这将返回一个Map<String, String>实例将环境变量名称链接到它们的值。

+0

谢谢你的回答,你是对的,但我忘了发布,在这个项目中,我仍然使用Java 1.4 :( – jeven

+0

@ user734535嗯,我会......它真的只在1.5引入。不知道是怎么回事编码控制台输出往往是我的经验有问题 –

+0

我临时使用Java 1.6。与System.getEnv(“APPDATA”),但我结束了相同的编码问题。试图转换String.getBytes()遍历所有字符集,但没有一个提供正确的字符串 – jeven