当我尝试在Windows命令提示符下执行它们时,我无法在java文件中处理特殊字符,如( - ,',£etc)。
示例:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Mangifera indica – the common mango");
}
}
预期产量:芒果(Mangifera indica) - 普通芒果
输出收获:MangiferaindicaΓôô普通芒果
我认为这是某种unicode问题,我非常想在命令提示符下运行它,有没有办法可以对它进行排序?
答案 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,为我工作。