我正在开发一个项目,当我尝试使用Java中的ResourceBundle从属性文件中读取日文字符串时,我得到的是一堆问号(??????????? )在我的申请表中显示。
我知道我需要以某种方式对字符串进行编码,但我已经尝试了几种不同的方法而没有运气。我也尝试在文本编辑器中对属性文件进行编码,但这似乎并不像我想要的那样。我检索字符串的代码如下。我知道你可以用流阅读器和其他方法做到这一点,但我想尽可能使用ResourceBundle来保持当前的代码结构。如果有任何问题或需要澄清,请随时告诉我。
private final ResourceBundle bundle = ResourceBundle.getBundle("propertiesFile");
titleText = bundle.getString("title.text");
只是在我的财产档案中给你一个想法,title.text =会议参加者事前登录用ページ。
任何建议都表示赞赏。这已经变成了一种真正的痛苦。
再次感谢,
-Dave F。
答案 0 :(得分:1)
ResourceBundle只能读取ISO 8859-1文件。看到这个帖子。 How to use UTF-8 in resource properties with ResourceBundle
我在这里遇到了同样的问题,我已经将我的ResourceBundle转换为一个Properties对象,就像这个帖子的答案一样:read resourcebundle as UTF-8. getString() Method seems to change encoding to ISO-8859
像这样:
InputStream utf8in = getClass().getClassLoader().getResourceAsStream("/path/to/utf8.properties");
Reader reader = new InputStreamReader(utf8in, "UTF-8");
Properties props = new Properties();
props.load(reader);
答案 1 :(得分:1)
经过一些研究,我实际上仍然能够使用ResourceBundle方法。
在我从ResourceBundle中提取的属性文件中,我在unicode中列出了以下内容:
title.text=\u4f1a\u8b70\u53c2\u52a0\u8005\u4e8b\u524d\u767b\u9332\u7528\u30da\u30fc\u30b8
当被ResourceBundle拉入时,它会翻译为:
会議参加者事前登録用ページ
我确信这可能不是最好的做法,但它无需改变整个项目的资源属性,所以我认为我会与大家分享帮助我。
答案 2 :(得分:0)
当您运行应用时,您可以尝试:
java -Dfile.encoding=UTF-8 -jar YourApp.jar
这基本上设置了默认字符集