当我从intelijidea运行maven项目并使用
System.out.println("Привет")
一切都好,我明白了”привет" 在输出中。但当我用maven编译项目并运行jar文件时,我得到了什么?????在输出中。怎么能修好呢?
fae0ux8s1#
一般来说,关于字符编码存在多个可能的配置问题。我想,jar文件仍然是正确的。只有将字符输出到控制台(或执行命令行所用的任何东西)才是问题所在。jre通常将字符输出到 System.out 使用“平台默认编码”。你可以和我核对一下
System.out
System.out.println(System.getProperty("file.encoding"));
(当然,在maven编译的jar文件中,检查存在问题的环境)。这应该是“utf-8”。如果没有,就跟我一起跑 -Dfile.encoding=UTF-8 在java命令行上,查看情况是否发生了变化。那么可能是您输出的控制台不支持utf-8。如果您使用的是windows系统,请检查windows控制台使用的代码页。你可以用
-Dfile.encoding=UTF-8
> 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,那么源文件编码就很混乱。
1条答案
按热度按时间fae0ux8s1#
一般来说,关于字符编码存在多个可能的配置问题。
我想,jar文件仍然是正确的。只有将字符输出到控制台(或执行命令行所用的任何东西)才是问题所在。
jre通常将字符输出到
System.out
使用“平台默认编码”。你可以和我核对一下(当然,在maven编译的jar文件中,检查存在问题的环境)。这应该是“utf-8”。如果没有,就跟我一起跑
-Dfile.encoding=UTF-8
在java命令行上,查看情况是否发生了变化。那么可能是您输出的控制台不支持utf-8。如果您使用的是windows系统,请检查windows控制台使用的代码页。你可以用
然后运行jar文件。65001是windows代码页码,表示utf-8。希望您能看到正确的输出。
还有一个方面可能经常出错,但我猜这不适用于您的情况:您可能用utf-8编写了java源文件,但maven认为源代码是用iso-8859-1编码的。你可以通过
如果打印的长度不是6,那么源文件编码就很混乱。