(IPA) International Phoneti c Алфавит, который символ показывает нормально в ma c, но не в windows - PullRequest
0 голосов
/ 17 июня 2020

Я работаю с приложением, которое отображает символы IPA из файла Json.
Я использую IMa c с Netbeans, и приложение работает хорошо, но если я скомпилирую проект и выполню его в 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);
    }

}

1 Ответ

1 голос
/ 17 июня 2020

Класс FileReader будет использовать набор символов операционной системы по умолчанию.

См. InputStreamReader, особенно конструкторы, которые принимают CharSet или имя набора символов.

Вероятно, вы захотите использовать UTF-8 (набор символов по умолчанию в Ma c OS), поскольку вы говорите, что он работает правильно в Ma c OS.

Когда вы запускаете его на Windows, набор символов по умолчанию Windows -1252

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...