JavaFX 阿拉伯字母根本不显示

You*_*hab 5 java macos encoding javafx arabic-support

我有以下 FXML 文件

\n
<?xml version="1.0" encoding="UTF-8"?>\n\n<?import javafx.scene.text.*?>\n<?import javafx.scene.control.*?>\n<?import javafx.scene.layout.*?>\n\n<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">\n   <children>\n      <TableView layoutX="54.0" layoutY="136.0" prefHeight="200.0" prefWidth="495.0">\n        <columns>\n          <TableColumn prefWidth="75.0" text="\xd8\xa7\xd9\x84\xd8\xb1\xd8\xb5\xd9\x8a\xd8\xaf" />\n          <TableColumn prefWidth="75.0" text="\xd9\x85\xd9\x84\xd8\xa7\xd8\xad\xd8\xb8\xd8\xa7\xd8\xaa" />\n          <TableColumn prefWidth="75.0" text="\xd8\xaf\xd8\xa7\xd8\xa6\xd9\x86" />\n          <TableColumn prefWidth="75.0" text="\xd9\x85\xd8\xaf\xd9\x8a\xd9\x86" />\n          <TableColumn prefWidth="75.0" text="\xd8\xa7\xd9\x84\xd8\xaa\xd8\xa7\xd8\xb1\xd9\x8a\xd8\xae" />\n        </columns>\n      </TableView>\n   </children>\n</AnchorPane>\n
Run Code Online (Sandbox Code Playgroud)\n

如上所述,文件编码为 UTF-8。当我运行我的项目时,它显示如下:\n在此输入图像描述

\n

为什么会这样显示呢?怎么了?仅供参考,我正在使用 MacOS

\n

You*_*hab 5

问题出在 JDK 版本,而不是 JavaFX 版本或 MacOS 版本。我使用的是 JavaFX 17.0.6 和 JDK 11,这导致了这个问题。当我将 JDK 更新到版本 21 时,它工作得很好,如下所示: 在此输入图像描述

感谢@jewelsea 建议我更新 JDK。

  • 对于那些使用 Java 17 或更早版本的用户请注意:可以通过将“FXMLLoader”的字符集指定为“StandardCharsets.UTF_8”来解决此问题。或者可以使用“-Dfile.encoding=utf-8”来设置系统属性。 (2认同)