properties配置文件中文亂碼解決方法


方法1   properties文件的格式一般為:

ROOT=http://localhost:8080/BNCAR2/
ROOTPATH=E:/ws2/BNCAR2/rel/
 
MALL_PARTS_PATH=mall.jsp?rowid=0&typeFlag=0&pid=32
MALL_AFFIX_PATH=mall.jsp?rowid=0&typeFlag=1&pid=74

MALL_TYPE_TAG1=保養套裝
MALL_TYPE_TAG2=系統養護
MALL_TYPE_TAG3=輪胎輪轂

NETWORK_TAG1=上海
NETWORK_TAG2=江蘇

以上為保存UTF-8格式,使用UltraEdit編輯,避免出現空格導致轉碼錯誤。(在文本編輯器中有時候空格看不出來,這就是看似中文對了,實際轉碼會存在非法字符的原因了~!!)
java中獲取配件文件信息,PropUtil.java

static Properties config = null;
    static String filename = PropUtil.class.getClassLoader().getResource("bn-context.properties").getFile();
    static Logger log = Logger.getLogger(PropUtil.class);
    
    public PropUtil() {
        super();
        config = getPropUtil();
    }

    public static Properties getPropUtil() {
        config = new Properties();
        InputStream is = null;
        try {
             //ln("初始化config對象!");
            is = PropUtil.class.getClassLoader().getResourceAsStream(
                    "bn-context-test.properties");
            config.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {// 關閉資源
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                }
            }
        }
        return config;
    }

    public static String getParameter(String key) {
        if(config == null){
            config = getPropUtil();
        }
        String value = config.getProperty(key);
        // 編碼轉換,從ISO8859-1轉向指定編碼

        try {
            if(value != null){
                value = new String(value.getBytes("ISO8859-1"), "UTF-8");
            }
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return value;
    }
    
    public static void setParameter(String key,String value) {
        if(config == null){
            config = getPropUtil();
        }
        config.setProperty(key, value);
    }

 

方法2  用UltraEdit編輯器,編寫中文配置文件bn-context-test.properties,在保存后再點擊另存為,文件名為prop.properties,編碼選擇unicode ascii就可以了。

ROOT=http://localhost:8080/BNCAR2/
ROOTPATH=E:/ws2/BNCAR2/rel/
 
MALL_PARTS_PATH=mall.jsp?rowid=0&typeFlag=0&pid=32
MALL_AFFIX_PATH=mall.jsp?rowid=0&typeFlag=1&pid=74

MALL_TYPE_TAG1=\u4FDD\u517B\u5957\u88C5
MALL_TYPE_TAG2=\u7CFB\u7EDF\u517B\u62A4
MALL_TYPE_TAG3=\u8F6E\u80CE\u8F6E\u6BC2

NETWORK_TAG1=\u4E0A\u6D77
NETWORK_TAG2=\u6C5F\u82CF

如果這種情況,以上java代碼就不需要轉碼那部分代碼,注釋掉。

        // 編碼轉換,從ISO8859-1轉向指定編碼

//        try {
//            if(value != null){
//                value = new String(value.getBytes("ISO8859-1"), "UTF-8");
//            }
//        } catch (UnsupportedEncodingException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM