首页 > 解决方案 > (IPA) 国际音标字符在 mac 中显示正常,但在 windows 中不显示

问题描述

我正在使用一个显示 Json 文件中的 IPA 字符的应用程序。
我正在使用带有 Netbeans 的 IMac,并且该应用程序运行良好,但是如果我编译该项目并在 Windows 计算机中执行它,它会显示不同的字符,甚至不是 IPA 字符。
我已经尝试过更改不同的字体系列,结果是一样的。

public class JavaFXApplicationJsonFile extends Application {

    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Print JsonFile");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                JSONParser jsonParser = new JSONParser();

                String jsonFileString = "src/javafxapplicationjsonfile/jsonFile.json";


                try {
                    FileReader fileReader = new FileReader(jsonFileString);

                    Object obj = jsonParser.parse(fileReader);

                    JSONObject jsonObject = (JSONObject) obj;

                    JSONArray jsonArray = (JSONArray) jsonObject.get("palabras");

                    for (int i = 0; i < jsonArray.size(); i++) {
                        JSONObject Palabras = (JSONObject) jsonArray.get(i);
                        System.out.println(Palabras.get("IPA").toString());

                        Alert alert = new Alert(Alert.AlertType.INFORMATION, Palabras.get("IPA").toString(), ButtonType.OK);
                        alert.show();
                    }



                } catch (FileNotFoundException ex) {
                    Logger.getLogger(JavaFXApplicationJsonFile.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(JavaFXApplicationJsonFile.class.getName()).log(Level.SEVERE, null, ex);
                } catch (ParseException ex) {
                    Logger.getLogger(JavaFXApplicationJsonFile.class.getName()).log(Level.SEVERE, null, ex);
                }

            }
        });



        StackPane root = new StackPane();
        root.getChildren().add(btn);

        Scene scene = new Scene(root, 600, 400);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}

标签: javajavafx

解决方案


FileReader 类将使用操作系统的默认字符集。

请参阅 InputStreamReader,尤其是采用 CharSet 或字符集名称的构造函数。

您可能想要使用 UTF-8(Mac OS 上的默认字符集),因为您说它在 Mac OS 上正常工作。

在 Windows 上运行时,默认字符集是 Windows-1252


推荐阅读