为什么JavaFX应用程序和场景生成器显示乱码文本?

为什么JavaFX应用程序和场景生成器显示乱码文本?,java,intellij-idea,javafx,fxml,scenebuilder,Java,Intellij Idea,Javafx,Fxml,Scenebuilder,以下是我的场景生成器的外观: 这是GUI: 独立场景生成器: 我刚刚从Java SDK演示中运行了以下源代码: package sample; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; import javafx.scene.control.Button; i

以下是我的场景生成器的外观:

这是GUI:

独立场景生成器:

我刚刚从Java SDK演示中运行了以下源代码:

package sample;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.Button;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        Button btn = new Button();
        btn.setText("Say 'Hello World'!");
        StackPane root_ctn = new StackPane();
        root_ctn.getChildren().add(btn);
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent actionEvent) {
                System.out.println("Hello World!");
            }
        });
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root_ctn, 300, 275));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}
包装样品;
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.fxml.fxmloader;
导入javafx.scene.control.Button;
导入javafx.scene.Parent;
导入javafx.scene.scene;
导入javafx.scene.layout.StackPane;
导入javafx.stage.stage;
导入javafx.stage.stage;
公共类主扩展应用程序{
@凌驾
public void start(Stage primaryStage)引发异常{
父根=FXMLLoader.load(getClass().getResource(“sample.fxml”);
按钮btn=新按钮();
btn.setText(“说‘你好,世界’!”);
StackPane root_ctn=新的StackPane();
root_ctn.getChildren().add(btn);

btn.setOnAction(新的EventHandler)我还没有找到解决方案,但我发现了一个有趣的模式: 在您的Glion Scene Builder屏幕截图上,有书写的
Pgy Rtqlgev
,它应该位于
New Project
,以及
Qrgp Rtqlgev
,它应该位于
Open Project
。请注意,每个字母都被字母表中的下一个字母替换

这同样适用于
Say'Hello World'!
,它被“翻译”为
Lc{'Jgrrq Yqtrf'!
。请注意,字母
y
{/code>替换,在ASCII表中位于
y
之后两个位置。有趣的是,字符
保持不变

每个字母占用的空间仍然是正确字母的空间,如下图中绿色背景上的正确文本所示:

更新: 您的系统中是否可能缺少字体“Segoe UI”或存在缺陷?例如,您可以在Word中使用该字体

更新:我发现用户面临的另外两个问题也是同样的问题。在这两种情况下,问题似乎都与Segoe UI字体有关:


查看是否有帮助。@Sedrick编辑器已设置为UTF8。无论如何,谢谢!您从未使用从fxml加载的父根目录。这是有意的吗?如果相关,也请显示fxml。该系统的默认区域设置是什么?试着使用
-Duser.language=en-Duser.country=US
@Puce运行它。是的,我正在尝试一些代码,所以我加上了我自己的“根”只是为了测试。谢谢,我会添加区域设置,看看它是否有效。你是对的!什么可以解释?我仍在寻找解释。但我很确定cp1252和utf-8之间没有编码问题,因为这些编码在同一位置有受影响的字母。我用另一个观察更新了我的答案。The Segoe UI字体在我的计算机上运行良好,因为我刚刚测试了它。这很奇怪,在其他情况下,Segoe UI是问题所在,请参阅我的更新答案。非常感谢!它与Segoe UI字体有关!我删除了字体系列并安装了一个新的字体系列,现在可以使用了