Maven项目的NetBeans 12 UTF-8中文输出

bkhjykvo  于 2022-11-10  发布在  Maven
关注(0)|答案(1)|浏览(271)

对于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-8netbeans.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),都没有成功。
"多亏了“
andrewjamesskomisa的努力。

lh80um4z

lh80um4z1#

这种解决方案适用于北欧字符的初始问题,而使中文字符的问题仍然悬而未决。

  • 要使NetBeans正确显示UTF-8编码文件字符,需要将选项-J-Dfile.encoding=UTF-8添加到netbeans.conf文件中netbeans_default_options变量得末尾,该文件位于/etc下得NetBeans安装文件夹中.
  • 要使输出正确显示北欧字符,Maven项目的项目设置需要设置为UTF-8(如果设置了-J-Dfile.encoding=UTF-8,则从netbeans.conf中删除-J-Dfile.encoding=UTF-8)。这可以通过右键单击项目并选择属性来完成。单击类别。在此处可以选择要使用的**编码 *。此设置将应用于当前项目。

相关问题