Java UTF-8有时输出错误

Java UTF-8有时输出错误,java,utf-8,console,Java,Utf 8,Console,我在将输出字符串写入Windows控制台时遇到问题,但这仅适用于我的机器(Windows 8.1)。我的朋友有Windows 7,所有操作都正常。以下是测试代码: package test; import java.io.PrintStream; import java.io.UnsupportedEncodingException; public class EncodingTest { public static void main(String[] args) throws U

我在将输出字符串写入Windows控制台时遇到问题,但这仅适用于我的机器(Windows 8.1)。我的朋友有Windows 7,所有操作都正常。以下是测试代码:

package test;

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
public class EncodingTest {

    public static void main(String[] args) throws UnsupportedEncodingException  {

       //First try
       System.out.println("ľščťžýáíéúäôň");

       //Second try
       PrintStream out = new PrintStream(System.out, true, "UTF-8");
       out.println("ľščťžýáíéúäôň");

    }

}
在NetBeans中,一切正常。但如果我尝试从Windows CMD运行代码,则输出为:

??????áíéúäô?
ľščťžýáíéúäôň
但这只是我的机器上的情况,在其他任何机器上都可以

  • 打开/运行
    cmd.exe
  • 单击左上角的图标
  • 选择属性
  • 然后是“字体”栏
  • 选择“Lucida控制台”并确定
  • 写入
    chcp 1252
    chcp 65001
  • 它现在应该打印Unicode

  • 您需要检查默认编码:

    Charset.defaultCharset()
    
    必须在程序启动时将默认编码指定为jvm的参数

    java -Dfile.encoding=UTF-8 test.EncodingTest.Main
    

    我终于找到了问题所在。在非Unicode程序选项语言的最后一个选项卡(管理)上的windows区域设置中,它是US(英语)。
    在我将此更改为斯洛伐克(Slovak)并且当然重新启动Win Everything后,一切正常:-)

    您朋友的机器上显示的代码是什么?另外,朋友是否会带上你编译的类或源代码,在他结束时再次编译?cmd中的代码页需要设置为支持这些特殊字符的代码页。(
    chcp
    )@nhahdh我认为实现这一目标的唯一方法是设置系统范围的代码页,这通常在安装时完成,在以后更改时需要重新启动。Marko是的,他接受了我编译的类,输出只是“Ĺťýýýýýýýýýýýýýýýýýý?使用此it打印输出看起来像:ľťťýýýýýýýýýýýýýýýý�íéúäôňäôň�ň� ľščťžýáíéúäôň�íéúäôňäôň�ň� 看起来所有的东西都打印出来了,但是还有其他的字符打印出来了!?