cmd中的Java unicode字符错误
我有一个Java类,用葡萄牙语打印“Hello World”: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! 有没有一种简单的方法可
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问题。见下面我的答案。