cmd中的Java unicode字符错误

fjs*_*jsj 4 java printing unicode cmd

我在Java中有以下类,用葡萄牙语打印"Hello World":

public class PrintUnicode {
    public static void main(String[] args) {
        System.out.println("Olá Mundo!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Eclipse,因此我将项目导出到Runnable Jar文件中.之后,我去了cmd(Windows 7)并运行生成的jar文件.

结果是:

Olß Mundo!
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来避免这个错误?

fjs*_*jsj 5

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

public class PrintUnicode {
    public static void main(String[] args) {
        System.console().printf("Olá Mundo!");
    }
}
Run Code Online (Sandbox Code Playgroud)

System.out发生错误的原因是:

默认情况下,Java会对在默认代码页中发送到System.out的字符串进行编码.在Windows XP上,这意味着有损转换为"ANSI"代码页.这很不幸,因为Windows命令提示符(cmd.exe)可以读取和写入Unicode字符.(来源)