【问题标题】:How to make a symbol appear in Netbeans output for Maven project?如何使符号出现在 Maven 项目的 Netbeans 输出中?
【发布时间】:2020-01-01 16:48:50
【问题描述】:

我尝试了各种方法,但没有任何效果。 Netbeans 始终显示“?”而不是符号本身 ♤ ♡ ♢ ♧

我的项目是 UTF-8 编码的。

我将输出窗口的字体更改为 Segoe UI Symbol。 它仍在打印

我的代码:

【问题讨论】:

  • 我根据您的反馈更新了我的答案。

标签: java maven netbeans unicode utf-8


【解决方案1】:

您可能只需要为 输出 窗口指定一种可以呈现字符“♤ ♡ ♢ ♧”的字体。一种这样的字体是 Segoe UI Symbol,并将其设置为 Output 窗口中的字体:

  • 工具 > 选项 > 其他 > 点击 输出 选项卡 > 字体
  • 将字体设置为Segoe UI Symbol,然后点击OK

然后再次运行您的应用程序,字符将在输出窗口中正确呈现:

如果这不能解决您的问题,请更新您的问题以显示您的代码。


根据 OP 反馈于 20 年 1 月 5 日更新:

  • 更改字体并没有帮助,事后看来,这无论如何都没有必要。
  • 该问题仅与 NetBeans 中的 Maven 项目有关。 Ant 项目没有这个问题。

输出窗口中渲染扑克牌符号:

  • 在 NetBeans 配置文件 etc/netbeans.conf 中,将 -J-Dfile.encoding=UTF-8 附加到 netbeans_default_options 的属性值末尾(就在结束引号之前)。
  • 保存更改,然后重新启动 NetBeans。
  • System.out 使用的 PrintStream 必须支持 UTF-8。这可以通过两种不同的方式实现:
    1. 打开项目的属性,并为 Properties > Run > VM Options 设置 -Dfile.encoding=utf-8,以便默认的 PrintStream 在运行时使用 UTF-8 编码。
    2. 或者,在代码中创建并使用 UTF-8 PrintStream 代替。有关详细信息,请参阅下面的代码。

代码如下:

package com.unthreading.emojimaven;

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.nio.charset.Charset;

public class App {

    public static void main(String[] args) throws UnsupportedEncodingException {

        String symbPique = "\u2660";
        String symbCoeur = "\u2665";
        String symbCarreau = "\u2666";
        String symbTrefle = "\u2663";

        System.out.println("System.getProperty(\"file.encoding\")=" + System.getProperty("file.encoding"));
        System.out.println("StandardCharsets.UTF_8.name(): " + StandardCharsets.UTF_8.name());
        System.out.println("Charset.defaultCharSet()=" + Charset.defaultCharset());
        System.out.println("Default PrintStream: " + symbCarreau + "--" + symbCoeur + "--" + symbPique + "--" + symbTrefle);

        PrintStream outStream = new PrintStream(System.out, true, StandardCharsets.UTF_8.name());
        outStream.println("UTF-8 PrintStream: " + symbCarreau + "--" + symbCoeur + "--" + symbPique + "--" + symbTrefle);
    }
}

当项目的VM Options设置为-Dfile.encoding=utf-8时,输出如下:

------------------------------------------------------------------------
Building emojimaven 1.0-SNAPSHOT
------------------------------------------------------------------------

--- exec-maven-plugin:1.5.0:exec (default-cli) @ emojimaven ---
System.getProperty("file.encoding")=UTF-8
StandardCharsets.UTF_8.name(): UTF-8
Charset.defaultCharSet()=UTF-8
Default PrintStream: ♦--♥--♠--♣
UTF-8 PrintStream: ♦--♥--♠--♣
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 0.717 s
Finished at: 2020-01-05T00:21:16-05:00
Final Memory: 7M/60M
------------------------------------------------------------------------

注意事项:

  • 必须更改 netbeans.conf,以便 NetBeans 在启动期间为 UTF-8 配置 Output 窗口。
  • 输出窗口的默认字体是等宽。由于这可以正确呈现扑克牌符号,因此无需更改它,至少对于 OP 中给出的要求。
  • pom.xml中不需要任何特殊设置。

【讨论】:

  • 按照你的建议做了。还是行不通。我编辑了我的问题并展示了我的简单代码。
  • @mickyyyyyz 好的。 [1] 我的示例有效,因为我创建了一个 Ant 项目。我可以用 Maven 项目重现您的问题,但我不确定是什么原因造成的。 [2] SO 问题Maven: Source Encoding in UTF-8 not working? 可能对您有帮助,尽管它对我没有帮助。 [3] 您能否将您的代码发布为文本(不是屏幕截图)以及您的 pom.xml
猜你喜欢
  • 2011-08-25
  • 1970-01-01
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 2014-11-19
  • 2016-07-13
相关资源
最近更新 更多