Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cmd中的Java unicode字符错误_Java_Unicode_Printing_Cmd - Fatal编程技术网

cmd中的Java unicode字符错误

cmd中的Java unicode字符错误,java,unicode,printing,cmd,Java,Unicode,Printing,Cmd,我有一个Java类,用葡萄牙语打印“Hello World”: public class PrintUnicode { public static void main(String[] args) { System.out.println("Olá Mundo!"); } } 我正在使用Eclipse,所以我将项目导出到一个可运行的Jar文件中。之后,我转到cmd(Windows7)并运行生成的jar文件 结果是: Olß Mundo! 有没有一种简单的方法可

我有一个Java类,用葡萄牙语打印“Hello World”:

public class PrintUnicode {
    public static void main(String[] args) {
        System.out.println("Olá Mundo!");
    }
}
我正在使用Eclipse,所以我将项目导出到一个可运行的Jar文件中。之后,我转到cmd(Windows7)并运行生成的jar文件

结果是:

Olß Mundo!

有没有一种简单的方法可以避免此错误?

找到了解决方案。只需更改为:

public class PrintUnicode {
    public static void main(String[] args) {
        System.console().printf("Olá Mundo!");
    }
}
System.out发生错误的原因是:

默认情况下,Java对发送的字符串进行编码 在默认代码中设置为System.out 页在Windows XP上,这意味着 有损转换为“ANSI”代码 页这是不幸的,因为 Windows命令提示符(cmd.exe)可以 读写Unicode字符。()


我以前通过手动编码解决了这个问题:
System.out.write(myStr.getBytes(consoleCharset))但这要好得多。在Eclipse中,您可以设置Java源代码的编码。如果不这样做,编译器会假设默认编码,文本可能会出错。我相信这不是原因。即使更改了文件编码,错误仍然存在。当使用System.out处理unicode字符时,这是一个Java问题。见下面我的答案。