utf-8文本

fnatzsnv  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(381)

当我从intelijidea运行maven项目并使用

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

一切都好,我明白了”привет" 在输出中。
但当我用maven编译项目并运行jar文件时,我得到了什么?????在输出中。怎么能修好呢?

fae0ux8s

fae0ux8s1#

一般来说,关于字符编码存在多个可能的配置问题。
我想,jar文件仍然是正确的。只有将字符输出到控制台(或执行命令行所用的任何东西)才是问题所在。
jre通常将字符输出到 System.out 使用“平台默认编码”。你可以和我核对一下

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

(当然,在maven编译的jar文件中,检查存在问题的环境)。这应该是“utf-8”。如果没有,就跟我一起跑 -Dfile.encoding=UTF-8 在java命令行上,查看情况是否发生了变化。
那么可能是您输出的控制台不支持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,那么源文件编码就很混乱。

相关问题