jar 文件中的 UTF-8 文本

UTF-8 text in jar file

当我 运行 来自 IntelijIdea 的 maven 项目并使用例如

System.out.println("Привет")

一切正常,我在输出中看到“Привет”。

但是当我使用 maven 和 运行 jar 文件编译项目时,我得到了 ??????在输出中。 如何修复?

一般来说,关于字符编码有多种可能的配置问题。

我猜,jar 文件还是正确的。唯一的问题在于将字符输出到控制台(或您用于执行命令行的任何内容)。

您的 JRE 通常使用“平台默认编码”将字符输出到 System.out。您可以使用

查看
System.out.println(System.getProperty("file.encoding"));

(当然是在maven编译的JAR文件中,查看问题所在的环境)。那应该给“UTF-8”。如果没有,请在 java 命令行中使用 运行 和 -Dfile.encoding=UTF-8,看看情况是否发生了变化。

那可能是你输出的控制台不支持UTF-8。如果您使用的是 Windows 系统,请检查 Windows 控制台使用的代码页。您可以使用

更改它
> CHCP 65001

然后是 运行 JAR 文件。 65001 是 windows 代码页编号,意思是 UTF-8。希望您会看到正确的输出。

还有一个方面经常出错,但我想它不适用于你的情况:你可能用 UTF-8 编写了 Java 源文件,但 maven 认为源代码编码为例如ISO-8859-1。您可以通过

检查
String text = "Привет";
System.out.println(text.length());
System.out.println(text);

如果打印出来的长度不是6,说明源文件编码有误。