gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:13:15 25 4
gpt4 key购买 nike

如何将 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.confnetbeans_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)  

但是输出没有正确显示北欧字符。

如果我单击左侧的设置 按钮(见下图),Maven 选项对话框将打开,但我看不到设置输出编码的位置。 Maven Home 设置为Bundled

在 Linux (Debian 10) 上,无需任何额外配置即可正常输出。

Output window

帮助来自评论

按照建议我先跑

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 添加到 Project Properties -> Run -> VM Options,但输出仍然没有变化。

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

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

然后我运行建议的测试,令我惊讶的是 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_default_options 的末尾netbeans.conf 文件中的变量。
  • 要使输出显示北欧字符,Maven 项目项目设置 需要设置为 UTF-8(和 -J-Dfile. encoding=UTF-8netbeans.conf 中删除(如果已设置)。

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

感谢
andrewjamesskomisa感谢他们的努力。

最佳答案

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

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

关于java - NetBeans 12 UTF-8 中文输出与 Maven 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69101857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com