2011-08-18 127 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。