对于Maven项目,如何将输出控制台设置为UTF-8?
这个问题的出现是因为NetBeans没有正确解码UTF-8文档(北欧字符,如áðíøåú等)。通过在互联网上搜索,我找到了设置-J-Dfile.encoding=UTF-8
的解决方案。现在我可以查看和编辑使用UTF-8编码的文件了。
帮助-〉关于现在显示
Product Version: Apache NetBeans IDE 12.4
Java: 16.0.1; OpenJDK 64-Bit Server VM 16.0.1+9-24
Runtime: OpenJDK Runtime Environment 16.0.1+9-24
System: Windows 10 version 10.0 running on amd64; UTF-8; en_US (nb)
-J-Dfile.encoding=UTF-8
是通过将其添加到netbeans.conf
中的netbeans_default_options
的末尾来设置的。
这改变了
System: Windows 10 version 10.0 running on amd64; Cp1252; en_US (nb)
至:
System: Windows 10 version 10.0 running on amd64; UTF-8; en_US (nb)
但是,输出未正确显示北欧字符。
如果我单击左侧的settings按钮(见下图),Maven选项对话框将打开,但是我看不到我设置输出编码的位置。Maven Home设置为 Bundled。
在Linux(Debian 10)上,输出可以正常工作,无需任何额外的配置。
帮助来自注解
我建议先跑
System.out.println(System.getProperty("file.encoding"));
显示为Cp1252
。为什么会发生这种情况?
第二个测试使用:
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
...
PrintStream out = new PrintStream(System.out, true, StandardCharsets.UTF_8);
System.out.println("读写汉字");
显示为????
。同样,当StandardCharsets
设置为UTF_8
时,为什么会发生这种情况?
我尝试将-Dfile.encoding=UTF-8
添加到 * 项目属性-〉运行-〉VM选项 *,但输出仍然没有变化。
最后一件事我已经尝试是删除-J-Dfile.encoding=UTF-8
从netbeans.conf
再次.检查帮助-〉关于其中再次显示Cp1252
.
我在项目的src文件夹中创建了一个文件,在 Notepad++ 中使用UTF-8编码,并在NetBeans中打开它。令我惊讶的是,它显示了正确的字符。然而,当我打开项目外的UTF-8编码文件时,这个惊讶变成了 ahh。现在北欧字符不能正确显示。通过在netbeans.conf
的末尾加上-J-Dfile.encoding=UTF-8
,北欧字符再次正确显示,中文字符也是如此。
然后我运行建议的测试,再次令我惊讶的是,从file.encoding
属性输出的是UTF-8
。
我注意到输出窗口中有一个变化。
cd C:\..\NetBeansProjects\..\; JAVA_HOME=E:\\...\\jdk-16.0.1 cmd /c "\"C:\\...\\netbeans\\java\\maven\\bin\\mvn.cmd\" -Dtest=ubl.InvoiceTest#outputTest -Dmaven.ext.class.path=C:\\...\\netbeans\\java\\maven-nblib\\netbeans-eventspy.jar -Dfile.encoding=UTF-8 surefire:test"
选项-Dfile.encoding=UTF-8
接近行尾。如果我将-J-Dfile.encoding=UTF-8
添加到netbeans.conf
,则第一行以 ... netbeans-eventspy.jar surefire:test”.-Dfile.encoding=UTF-8结尾。为什么会这样?
Maven项目
我所面临的问题并不是NetBeans直接造成的,而是NetBeans和Maven的结合。
- 要使NetBeans正确显示UTF-8编码得文件字符,需要将选项
-J-Dfile.encoding=UTF-8
添加到netbeans.conf
文件中netbeans_default_options
变量得末尾. - 要使输出显示北欧字符,需要将Maven项目的项目设置设置为UTF-8(如果设置,则从
netbeans.conf
中删除-J-Dfile.encoding=UTF-8
)。
这就留下了一个关于中文字符的问题。我已经测试过了,将Maven项目设置为UTF-16、UTF-32和Big 5,都没有成功显示中文字符。也尝试过一些字体的更改(等宽、NSimSun、SimSun、Source Serif Pro、Source Code Pro和诺托Sans),都没有成功。
"多亏了“
andrewjames和skomisa的努力。
1条答案
按热度按时间lh80um4z1#
这种解决方案适用于北欧字符的初始问题,而使中文字符的问题仍然悬而未决。
-J-Dfile.encoding=UTF-8
添加到netbeans.conf
文件中netbeans_default_options
变量得末尾,该文件位于/etc
下得NetBeans安装文件夹中.UTF-8
(如果设置了-J-Dfile.encoding=UTF-8
,则从netbeans.conf
中删除-J-Dfile.encoding=UTF-8
)。这可以通过右键单击项目并选择属性来完成。单击源类别。在此处可以选择要使用的**编码 *。此设置将应用于当前项目。