2011-11-15 81 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