欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用RESOURCE_BUNDLE注意文件编码

程序员文章站 2022-07-14 17:20:15
...
RESOURCE_BUNDLE 提供了一个键值对让我们更加容易将一些文本字符串信息放在外部,增加灵活性。
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 Eclipse