为什么JavaSwing程序不能显示变音符号(ä、ö、…)等德语字符?

Swing 程序显示错误的字符而不是德语变音。此按钮应为“Schließen”,例如:. 据我所知,所有 UI 元素都会发生这种情况。

创建 UI 的代码并不少见,例如:

about = new JButton("");
about.setToolTipText("Über das Programm");

我已经检查了以下事项:

  1. .java 文件的编码是 utf-8(用 VS 代码检查)
  2. 字体为 javax.swing.plaf.FontUIResource[family=Dialog,name=Dialog,style=bold,size=12]。Dialog 似乎是默认字体,所以如果它不支持变音符号会很奇怪。但是我还没有找到一种方法来检查这个,因为当我通过 Windows 检查我安装的字体时,我没有找到一种名为“Dialog”的字体。

该项目还使用 gradle (6.8)。

这种行为的原因是什么?当我与在 Linux 上编译相同程序的人交谈时,他们似乎没有这个问题。

编辑:

我还找到了这样的代码:

JLabel test = new JLabel();
test.setFont(new Font("Arial", Font.PLAIN, 12));
test.setText("<html>Something with ß</html>");

Arial 肯定支持变音,但这段代码仍然没有正确显示 ß

回答

将源代码解析为 UTF-8

感谢评论者,我可以找到问题的根源:编译器没有将我的源代码解析为 UTF-8 字符编码。

我不得不在我的build.gradle文件中添加以下内容:

compileJava {
    options.encoding = 'UTF-8'
}


以上是为什么JavaSwing程序不能显示变音符号(ä、ö、…)等德语字符?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>