【问题标题】:Java unicode characters error in cmdcmd中的Java unicode字符错误
【发布时间】:2010-07-22 05:50:11
【问题描述】:

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

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

我使用的是 Eclipse,所以我将项目导出到一个可运行的 Jar 文件。之后,我去cmd(Windows 7)运行生成的jar文件。

结果是:

Olß Mundo!

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

【问题讨论】:

  • 在 Eclipse 中可以设置 Java 源代码的编码。如果您不这样做,编译器会假定默认编码和文本可能会出错。
  • 我相信这不是原因。即使您更改文件编码,错误仍然存​​在。使用 System.out 处理 unicode 字符时,这是一个 Java 问题。请参阅下面的答案。

标签: java unicode printing cmd


【解决方案1】:

找到了解决办法。只需更改为:

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 字符。 (source here)

【讨论】:

  • 我之前通过手动编码解决了这个问题:System.out.write(myStr.getBytes(consoleCharset)); 但这要好得多。
猜你喜欢
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多