【问题标题】:JavaFX application shows weird symbols instead Russian languageJavaFX 应用程序显示奇怪的符号而不是俄语
【发布时间】:2015-11-06 13:58:11
【问题描述】:

我正在开发应用程序,一切正常。 应用程序假设支持英语和俄语。 英语工作正常,但是当我尝试使用俄语语言环境启动应用程序时,我看到了这个:

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=Выберите папку в которой сгенерируется приложение
#...

怎么了?

【问题讨论】:

  • Java 属性文件must be in the ISO-8859-1 encoding. IDE 倾向于通过将\u 转义符显示为其对应的字符来“隐藏”这一点。唯一确定的方法是在纯文本编辑器中打开它。您可能会发现 JDK 的 native2ascii 工具对创建具有正确转义符的 .properties 文件很有用。
  • @VGR 你是对的。谢谢你。 Intellij 将其保存为 UTF-8(文件->设置>文件编码),我还没有找到转换 *.properties 文件的方法。所以我只是使用在线服务来转换native2ascii.net/# 并且它有效。请发布此问题的答案
  • 但现在我有另一个问题,有时我会看到这个:invalid next size (fast): 0x00007f71984bf9b0 ***(如果坚持会发布另一个问题)

标签: java javafx localization


【解决方案1】:

Java 属性文件must be in the ISO-8859-1 encoding. IDE 倾向于通过将\u 转义显示为其对应的字符来“隐藏”这一点。唯一确定的方法是在纯文本编辑器中打开它。

您可能会发现 JDK 的 native2ascii 工具对创建具有正确转义的 .properties 文件很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    相关资源
    最近更新 更多