2015-05-31 55 views
1

我使用i18n的属性。如果我指定的非英语语言环境:如何设置捆绑的编码?

ResourceBundle messages = ResourceBundle.getBundle("i18n/Messages", new Locale("tr", "TR")); 

我看到消息与错误的编码:

ÐÑивеÑ! 

如何设置正确的编码?

+0

什么是你的包文件的编码?你如何输出这个信息? –

+0

编码是UTF-8。我通过'System.out.println(title);'打印出来 – JohnWinter

回答

2

问题:默认情况下ISO 8859-1字符编码用于读取属性文件的内容,所以如果文件包含超出ISO 8859-1的任何字符,那么它将不会被正确处理。

解决方案一: 过程中的属性文件与ISO 8859-1字符编码的内容通过native2ascii - Native-to-ASCII Converter

什么native2ascii的做:它将所有非ISO 8859-1字符在他们的等价\ uXXXX中。这是一个很好的工具,因为你不需要搜索\ uXXXX等价的特殊字符。

用途为UTF-8:native2ascii -encoding utf8 e:\a.txt e:\b.txt

如果你使用Eclipse,那么你会发现,它隐含的特殊字符转换成为\ uXXXX等同。尝试复制

会意字/会意字

成一个属性在Eclipse文件打开。

第二溶液:创建自定义ResourceBundle.Control类可与ResourceBundle被用于读取在任何给定的编码方案的性能。您可能想要使用已创建并共享的CustomResourceBundleControl。 如下使用它:

ResourceBundle messages = ResourceBundle.getBundle("i18n/Messages", new CustomResourceBundleControl("UTF-8"));