为什么JavaSwing程序不能显示变音符号(ä、ö、…)等德语字符?
Swing 程序显示错误的字符而不是德语变音。此按钮应为“Schließen”,例如:. 据我所知,所有 UI 元素都会发生这种情况。
创建 UI 的代码并不少见,例如:
about = new JButton("");
about.setToolTipText("Über das Programm");
我已经检查了以下事项:
- .java 文件的编码是 utf-8(用 VS 代码检查)
- 字体为 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'
}