使用资源包

时间:2015-06-19 15:36:04

标签: java encoding character-encoding resourcebundle properties-file

我正在开发一个项目,当我尝试使用Java中的ResourceBundle从属性文件中读取日文字符串时,我得到的是一堆问号(??????????? )在我的申请表中显示。

我知道我需要以某种方式对字符串进行编码,但我已经尝试了几种不同的方法而没有运气。我也尝试在文本编辑器中对属性文件进行编码,但这似乎并不像我想要的那样。我检索字符串的代码如下。我知道你可以用流阅读器和其他方法做到这一点,但我想尽可能使用ResourceBundle来保持当前的代码结构。如果有任何问题或需要澄清,请随时告诉我。

private final ResourceBundle bundle = ResourceBundle.getBundle("propertiesFile");

titleText = bundle.getString("title.text");

只是在我的财产档案中给你一个想法,title.text =会议参加者事前登录用ページ。

任何建议都表示赞赏。这已经变成了一种真正的痛苦。

再次感谢,

-Dave F。

3 个答案:

答案 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

这基本上设置了默认字符集