使用RESOURCE_BUNDLE注意文件编码
程序员文章站
2022-07-14 17:20:15
...
RESOURCE_BUNDLE 提供了一个键值对让我们更加容易将一些文本字符串信息放在外部,增加灵活性。
读的方法eclipse默认就带了
但是对所读的文件的编码要求一定要是iso8859-1,如果把文件换成GBK、UTF-8或者其他那么则无法读取,在上述代码则会炮出类似
的异常。
所以要想读中文,只有把文件转换为UTF-8的ascii码才可以。
一般利用java自带的工具native2ascii便可。
联想:N年前一直纳闷什么时候才会用到这个工具。原来在文件读取的时候,读的文件与被读的文件之间的编码会成为问题。JAVA支持的字符编码集是unicode,即System.out.print("\uXXXX")便可以输出在UNICODE里对应的字符,native2ascii做的就是这件事,把每个各种编码的字符转换成unicode中对应的ascii码。在iso8859-1中根本没有对应中文的ascii码那么势必无法利用这样的文件保存中文了,所以,只有使用正确的字符集对编码进行解析才可以获得想要的字符。
key1=value1 key2=value2
读的方法eclipse默认就带了
import java.util.MissingResourceException; import java.util.ResourceBundle; import java.util.Locale; /** * @author liweigong */ public class Message { private static final String BUNDLE_NAME = "message"; private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle .getBundle(BUNDLE_NAME, Locale.getDefault()); private Message() { } public static String getString(String key) { try { return RESOURCE_BUNDLE.getString(key); } catch (MissingResourceException e) { e.printStackTrace(); return '!' + key + '!' + " Not Found!"; } } }
但是对所读的文件的编码要求一定要是iso8859-1,如果把文件换成GBK、UTF-8或者其他那么则无法读取,在上述代码则会炮出类似
Can't find resource for bundle java.util.PropertyResourceBundle, key WebImage
的异常。
所以要想读中文,只有把文件转换为UTF-8的ascii码才可以。
一般利用java自带的工具native2ascii便可。
联想:N年前一直纳闷什么时候才会用到这个工具。原来在文件读取的时候,读的文件与被读的文件之间的编码会成为问题。JAVA支持的字符编码集是unicode,即System.out.print("\uXXXX")便可以输出在UNICODE里对应的字符,native2ascii做的就是这件事,把每个各种编码的字符转换成unicode中对应的ascii码。在iso8859-1中根本没有对应中文的ascii码那么势必无法利用这样的文件保存中文了,所以,只有使用正确的字符集对编码进行解析才可以获得想要的字符。
上一篇: java基础种种