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

NetBeans 12 UTF-8 Chinese output with Maven projects

如何将 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 选项 ,但输出仍然没有变化。

我尝试的最后一件事是再次从 netbeans.conf 中删除 -J-Dfile.encoding=UTF-8。检查帮助 -> 关于再次显示 Cp1252.

我在项目 src 文件夹中创建了一个文件,在 Notepad++ 中使用 UTF-8 编码并在 NetBeans 中打开它。令我惊讶的是,它显示了正确的字符。然而,当我打开一个项目之外的 UTF-8 编码文件时,这个惊喜变成了 ahh。现在北欧字符显示不正确。通过将 -J-Dfile.encoding=UTF-8 添加回 netbeans.conf 的末尾,北欧字符再次正确显示。汉字也一样。

然后我 运行 建议的测试,再次令我惊讶的是 file.encoding 属性 的输出是 UTF-8。但是第二次测试仍然显示 ????.

我注意到输出中有一个变化 window。第一行是

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 的组合。

这使得汉字问题仍然悬而未决。 我已经测试过将 Maven 项目设置为 UTF-16、UTF-32 和 Big5,但没有成功显示中文字符。还尝试了一些字体更改(Monospaced、NSimSun、SimSun、Source Serif Pro、Source Code Pro 和 Noto Sans),但没有成功。

感谢
andrewjames and skomisa感谢他们的努力。

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

  • 要使 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 中删除)。这可以通过右键单击项目并选择 Properties 来完成。单击 来源 类别。您可以在此处选择要使用的 Encoding。此设置适用于当前项目。