无法在命令提示符下处理特殊字符

时间:2011-08-18 19:05:16

标签: java character-encoding

当我尝试在Windows命令提示符下执行它们时,我无法在java文件中处理特殊字符,如( - ,',£etc)。

示例:

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

预期产量:芒果(Mangifera indica) - 普通芒果

输出收获:MangiferaindicaΓôô普通芒果

我认为这是某种unicode问题,我非常想在命令提示符下运行它,有没有办法可以对它进行排序?

2 个答案:

答案 0 :(得分: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);
 }

输出:

  

[ibm-437,windows-437,cspc8codepage437,437,ibm437,cp437]:ΓÇô

     

[860,cp860,ibm-860,csIBM860,ibm860]:ΓÇô

     

[861,cp-is,ibm-861,cp861,csIBM861,ibm861]:ΓÇô

     

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

     

[csIBM865,ibm865,865,ibm-865,cp865]:ΓÇô

所以你的控制台运行在其中一个字符集中,但是你的System.out。假设是UTF-8。

答案 1 :(得分:0)

我想上面提到的问题的解决方案是将windows命令提示字体设置为consola并激活代码chcp 65001,为我工作。