2011-08-18 131 views
2

當我嘗試在Windows命令提示符下執行它時,我無法處理java文件中的特殊字符(如,(',£等))。無法在命令提示符下處理特殊字符

例子:

public class HelloWorld { 
    public static void main(String[] args) { 
    System.out.println("Mangifera indica – the common mango"); 
    } 
} 

預期輸出:芒果 - 常見芒果

輸出繼電器收到:芒果ΓÇô常見的芒果

我相信這是某種形式的統一問題,並我非常想在命令提示符下運行它,有沒有一種方法可以對它進行排序?

+0

可能是一個區域設置問題? – corsiKa

+1

我無法使信息[這裏](http://stackoverflow.com/questions/1035388/unicode-output-on-windows-command-line#answer-1035907)答案。這將是偷竊。 – cwallenpoole

回答

0

我想上面提到的問題的解決方案是設置Windows命令提示字體爲consola並激活代碼chcp 65001,爲我工作。

2

有了這個小程序,你可以「蠻力」檢查控制檯的編碼。 您的輸入是,導致輸出ΓÇô

這一計劃將通過嘗試所有可用的字符集生成ΓÇô模擬所有錯誤編碼輸出,它只是重新編碼的的UTF-8字節有其他錯誤的字符集:

String s="–"; 
byte[] b=s.getBytes("UTF-8"); 
for (Charset charset:Charset.availableCharsets().values()) 
{ 
    String p=new String(b,charset.name()); 
    if ("ΓÇô".equals(p)) 
    System.out.println(charset.aliases()+": "+p); 
} 

輸出:

[IBM437,窗-437,cspc8codepage437,437,IBM437,CP437]:ΓÇô

[860,CP860,ibm860,csIBM860,ibm860]:ΓÇô

[861,CP-是,ibm861,cp861,csIBM861,ibm861]:ΓÇô

[ibm863,csIBM863,cp863,863,ibm863]:ΓÇô

[csIBM865,ibm865 ,865,ibm-865,cp865]:'

因此,您的控制檯運行在這些字符集之一,但您的System.out。正在假設UTF-8。