Java UTF-8有时输出错误
我在将输出字符串写入Windows控制台时遇到问题,但这仅适用于我的机器(Windows 8.1)。我的朋友有Windows 7,所有操作都正常。以下是测试代码: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
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
chcp 1252
或chcp 65001
您需要检查默认编码:
Charset.defaultCharset()
必须在程序启动时将默认编码指定为jvm的参数
java -Dfile.encoding=UTF-8 test.EncodingTest.Main
我终于找到了问题所在。在非Unicode程序选项语言的最后一个选项卡(管理)上的windows区域设置中,它是US(英语)。
在我将此更改为斯洛伐克(Slovak)并且当然重新启动Win Everything后,一切正常:-)您朋友的机器上显示的代码是什么?另外,朋友是否会带上你编译的类或源代码,在他结束时再次编译?cmd中的代码页需要设置为支持这些特殊字符的代码页。(
chcp
)@nhahdh我认为实现这一目标的唯一方法是设置系统范围的代码页,这通常在安装时完成,在以后更改时需要重新启动。Marko是的,他接受了我编译的类,输出只是“Ĺťýýýýýýýýýýýýýýýýýý?使用此it打印输出看起来像:ľťťýýýýýýýýýýýýýýýý�íéúäôňäôň�ň� ľščťžýáíéúäôň�íéúäôňäôň�ň� 看起来所有的东西都打印出来了,但是还有其他的字符打印出来了!?