2015-11-06 75 views
1

我正在開發應用程序,一切都很好。 應用程序假設支持英文和俄文。 英語工作正常,但是當我試圖與俄羅斯語言環境中啓動應用程序,我看到這一點:JavaFX應用程序顯示奇怪的符號,而不是俄語

https://yadi.sk/i/gj8TOziskGvzf

我加載語言從包中start()方法:

Locale.setDefault(new Locale("ru", "RU")); 
    FXMLLoader loader = new FXMLLoader(this.getClass().getResource("view/sample.fxml")); 
    loader.setResources(ResourceBundle.getBundle("bundles.MyBundle")); 

在控制器:

public class SingleSiteConfiguratorController implements Initializable { 
    //.... 
    @Override 
    public void initialize(URL url, ResourceBundle resourceBundle) { 
     this.languageBundle = resourceBundle; 
    } 
    //.... 
    // And accessing 
    private void someMethod() { 
     String outputDir = languageBundle.getString("choose_output_folder"); 
    } 
} 

而且在MyBandle_ru.properties

#... 
choose_output_folder=Выберите папку в которой сгенерируется приложение 
#... 

出了什麼問題?

+1

Java屬性文件[必須在ISO-8859-1編碼中。](http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html#load-java .io.InputStream-)IDE通過顯示'\ u'轉義符作爲其相應的字符來「隱藏」這種趨勢。唯一可以確定的方法是用純文本編輯器打開它。您可能會發現JDK的[native2ascii](http://docs.oracle.com/javase/8/docs/technotes/tools/windows/native2ascii.html)工具可用於使用正確的轉義創建.properties文件。 – VGR

+0

@VGR你是對的。謝謝。 Intellij將其保存爲UTF-8(文件 - >設置>文件編碼),我還沒有找到轉換'* .properties'文件的方法。所以我只是使用在線服務來轉換http://native2ascii.net/#,它工作。請回答這個問題 – raiym

+0

但現在我有另一個問題,有時我看到這個:'無效的下一個大小(快):0x00007f71984bf9b0 ***'(如果persist會發布另一個問題) – raiym

回答

2

Java屬性文件must be in the ISO-8859-1 encoding. IDE傾向於通過將\u轉義字符顯示爲其相應字符來「隱藏」該字符。唯一可以確定的方法是用純文本編輯器打開它。

您可能會發現JDK的native2ascii工具可用於使用正確的轉義創建.properties文件。