Ich habe ein Problem mit der Anzeige von Zeichen mit diakritischen wie á, í, č, etc. Ich habe .properties Datei auf UTF-8 mit ISO 8599-1 gesetzt, aber wenn ich folgenden Code ausführen Ich wollte kein Ergebnis haben.JavaFX mehrsprachige .properties Datei Codierung
Hauptklasse:
@Override
public void start(Stage primaryStage) throws Exception{
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setResources(ResourceBundle.getBundle("bundles.language_sk", new Locale("sk", "SK")));
Parent root = fxmlLoader.load(getClass().getResource("/view/loginFrame.fxml"));
primaryStage.setTitle("Login");
Scene scene = new Scene(root, 563, 580);
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.show();
}
Login-Frame-Controller-Klasse:
@Override
public void initialize(URL location, ResourceBundle resources) {
ResourceBundle bundle = ResourceBundle
.getBundle("bundles.language_sk", new Locale("sk", "SK"));
setLoginBtnText(bundle);
}
public void setLoginBtnText(ResourceBundle bundle){
loginBtn.setText(bundle.getString("loginButton"));
}
language_sk.properties Datei:
#LOGIN FRAME
.
.
loginButton=Prihlásiť
.
.
Ergebnis:
So wie Sie sehen können, habe ich versucht, Text der Login-Schaltfläche mit .properties-Datei festlegen, aber Zeichen sind durcheinander.
Obwohl, wenn ich diesen Code in setLoginBtnText
Methode verwenden:
public void setLoginBtnText(ResourceBundle bundle){
String val = bundle.getString("loginButton");
try {
loginBtn.setText(new String(val.getBytes("ISO-8859-1"), "UTF-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
dann Text auf Knopf ist völlig in Ordnung. Wie kann ich einige globale Codierungseinstellungen für mein gesamtes Projekt festlegen, sodass ich nicht für jede einzelne Komponente in jeder Klasse eine Codierung festlegen muss? Vielen Dank.