我正在开发一个小项目,我想使用国际化。问题是,当我尝试使用内部带有西里尔符号的.properties文件时,文本显示为垃圾。当我对字符串进行硬编码时,它显示得很好。
这是我的代码:
ResourceBundle labels = ResourceBundle.getBundle("Labels");
btnQuit = new JButton(labels.getString("quit"));
在我的.properties文件中:
退出=Изход
我得到了垃圾。当我尝试
btnQuit = new JButton("Изход);
显示正确。据我所知,UTF-8是用于文件的编码。
有什么想法吗?
答案 0 :(得分:7)
AnyEdit是一个eclipse-plugin,允许您轻松地将您的属性文件转换为unicode符号。 (避免使用命令行工具,如native2ascii)
如果您单独使用Properties
类(没有资源包),那么从Java 1.6开始,您可以使用Reader
选择load具有自定义编码的文件(而不是{1}}而不是InputStream
)
我猜您也可以使用new PropertyResourceBundle(reader)
,而不是ResourceBundle.getBundle(..)
,其中reader
是:
Reader reader = new BufferedReader(new InputStreamReader(
getClass().getResourceAsStream("messages.properties"), "utf-8")));
答案 1 :(得分:4)
Properties默认为ISO-8859-1编码。必须使用native2ascii
将UTF-8属性转换为包含所有非ISO-8859-1字符的unicode转义序列的有效ISO-8859-1属性文件。