2013-03-13 142 views
0

我試圖執行包含波蘭語字符的Runtime.getRuntime().exec()命令。命令從第一個波蘭語信件中刪除。而不是波蘭信我得到「?」。使用UTF-8字符的Runtime.exec()命令

如何設置正確的編碼來正確執行此命令?

命令我使用的: 的execCommand(「PHP /家庭/腳本/ URL參數1參數2參數3)

的execCommand樣子:

private String execCommand(String command) 
{ 
    String output=""; 
    try 
    { 
     Process proc = Runtime.getRuntime().exec(command); 
     BufferedReader read = new BufferedReader(new InputStreamReader(proc.getInputStream())); 
     try 
     { 
     proc.waitFor(); 
     } 
     catch(InterruptedException e) 
     { 
      output=e.getMessage(); 
     } 
     while(read.ready()) 
     { 
      output=read.readLine(); 
     } 
    } 
    catch(IOException e) 
    { 
     output=e.getMessage(); 
    } 

    return output; 
} 
+0

什麼操作系統,這是配置? – Ingo 2013-03-13 19:49:11

+2

你能告訴我們更多的細節嗎?你的命令是怎樣的?你如何運行它(通過IDE或命令行)?什麼是您的操作系統(它使用什麼語言)?什麼是你的java文件的編碼? – Pshemo 2013-03-13 19:52:42

+0

這是slackware 14.我在服務器上運行java應用程序。在應用程序和其他功能中進行編碼是正確的。我可以在沒有任何問題的情況下使用波蘭語字符串它看起來隻影響exec()命令。 – 5k7 2013-03-13 22:41:33

回答

0

你可以嘗試以下方法:

String command = URLEncoder.encode("<your command>", "utf-8"); 

然後,您可以嘗試通過Runtime.exec運行

你也可以檢查你的JDK實際支持:

Charset.forName("UTF-8") 

如果失敗對於任何原因則有可能出錯了/沒有你的JDK

+0

我不能使用URLEncoder我得到錯誤:未處理的異常類型UnsupportedEncodingException。在我的應用程序的其他地方,我可以使用波蘭語字符,所以我確信jdk支持utf-8。 – 5k7 2013-03-13 22:48:29

+0

返回「UTF-8」的Charset.forName(「UTF-8」),這就是我們所期望的? – 5k7 2013-03-13 23:21:15

+0

是的,那很好。這真的只是一張支票。如果不能自己複製這個,我只能提供一個更進一步的建議 - 你可以把你想要執行的命令放到一個外部腳本中(.bat for windows,.sh或許用於linux),然後通過Runtime運行該腳本.exec?這樣你就不必在你的實際程序中編碼任何東西 – 2013-03-14 08:32:24