我使用i18n的属性。如果我指定的非英语语言环境:如何设置捆绑的编码?
ResourceBundle messages = ResourceBundle.getBundle("i18n/Messages", new Locale("tr", "TR"));
我看到消息与错误的编码:
ÐÑивеÑ!
如何设置正确的编码?
我使用i18n的属性。如果我指定的非英语语言环境:如何设置捆绑的编码?
ResourceBundle messages = ResourceBundle.getBundle("i18n/Messages", new Locale("tr", "TR"));
我看到消息与错误的编码:
ÐÑивеÑ!
如何设置正确的编码?
问题:默认情况下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"));
什么是你的包文件的编码?你如何输出这个信息? –
编码是UTF-8。我通过'System.out.println(title);'打印出来 – JohnWinter