與蝕

2016-04-27 67 views
3

I輸入一些參數中國參數運行的java程序喜歡-D你好=你好,並調用單個類,與蝕

java文件如下:

public class Test { 

public static void main(String[] args) throws Exception { 
    for(String name :args){ 
     System.out.println(name); 
    } 
} 

}

打印效果:

-D??=?? 

怎麼能解決這個問題?

+0

看看這兩個鏈接是否有幫助:http://www.mkyong.com/java/how-to-display-chinese-character-in-eclipse-console/和http://stackoverflow.com/questions/8056900/how-to-print-simplified-chinese-characters-to-eclipse-console – Berger

+0

你試過了嗎? [如何打印[簡體]中文字符到Eclipse控制檯?](http://stackoverflow.com/questions/8056900/how-to-print-simplified-chinese-characters-to-eclipse-console)或[如何在Eclipse中支持UTF-8編碼](http://stackoverflow.com/questions/9180981/how-to-support-utf-8-encoding-in-eclipse) –

+0

控制檯可以顯示正確的中文字符和項目,java文件,在調試配置中常見的編碼都是UTF-8,但奇怪的是,爲什麼在程序參數視圖中設置中文字符,主要的方法是獲取參數無法顯示正確。 – Davy

回答

0

看起來像一個乾淨的方式是不可能的: Passing command line unicode argument to Java code

可惜你不能可靠地使用與使用Windows的C運行時的STDLIB 命令行應用程序,如Java 非ASCII字符(和漂亮很多所有非Windows特定的腳本語言)。

這是因爲他們讀他們的輸入和輸出默認情況下使用特定的語言環境 代碼頁,這是從來沒有一個UTF,不像 它採用UTF-8所有其他現代操作系統。

雖然你可以使用CHCP命令,爲UTF-8編碼下CHCP 65001是有可能致命跳閘應用了幾種方法打破了支持終端的代碼頁更改爲其他 。

如果你只需要你的日本可以切換到代碼頁932通過設置您的區域設置(「語言非Unicode 應用程序」中的區域設置),日本(類似於 爲Shift-JIS)。對於不在該代碼頁中的字符,這仍然會失敗 。

如果您需要通過命令行 可靠地在Windows上獲得非ASCII字符,你需要調用Win32 API函數 GetCommandLineW直接避免了編碼到系統的代碼頁 層。可能你想用JNA來做到這一點。