[Java基礎]一個我使用的URL解碼方法,支持使用IE指定UTF8和GBK

        // url中獲取參數
        // inputEncoding
        String inputEncoding = "GBK";
        String ie = request.getParameter("ie");
        if (StringUtil.equalsIgnoreCase("UTF-8", ie) || StringUtil.equalsIgnoreCase("UTF8", ie)) {
            inputEncoding = ie;
        }
        // keywords(設置tomcat容器的URIEncoding="ISO-8859-1")
        // 首先從request獲取請求中的關鍵詞,此時keywords3的值可能爲:
        // (1)如果請求中的關鍵詞是"手機"的GBK原生字節碼"[0xCA][0xD6][0xBB][0xFA]":那麼此時keywords3 = 亂碼
        // (2)如果請求中的關鍵詞是"手機"的GBK URLEncoding後的編碼"%CA%D6%BB%FA":那麼此時keywords3 = %CA%D6%BB%FA
        // (3)如果請求中的關鍵詞是"手機"的UTF8原生字節碼"[0xE6][0x89][0x8B][0xE6][0x9C][0xBA]":那麼此時keywords3 = 亂碼
        // (4)如果請求中的關鍵詞是"手機"的UTF8 URLEncoding後的編碼"%E6%89%8B%E6%9C%BA":那麼此時keywords3 = %E6%89%8B%E6%9C%BA
        String keywords3 = request.getParameter("keywords");
        if (StringUtil.isNotBlank(keywords3)) {
            String keywords2 = null;
            try {
                // 然後按照inputEncoding轉換keywords3爲keywords2,keywords2的值可能爲:
                // (1)如果keywords3 = 亂碼:那麼此時keywords2 = 手機
                // (2)如果keywords3 = %CA%D6%BB%FA:那麼此時keywords2 = %CA%D6%BB%FA
                // (3)如果keywords3 = %E6%89%8B%E6%9C%BA:那麼此時keywords2 = %E6%89%8B%E6%9C%BA
                keywords2 = new String(keywords3.getBytes("ISO-8859-1"), inputEncoding);// “中文”或"%C6%A1%BE%C6"
            } catch (UnsupportedEncodingException e1) {
                keywords2 = keywords3;
            }
            // 然後按照inputEncoding轉換keywords2爲keywords,keywords的值可能爲:
            // (1)如果keywords2 = 手機:那麼此時keywords = 手機
            // (2)如果keywords2 = %CA%D6%BB%FA:那麼此時keywords = 手機
            // (3)如果keywords2 = %E6%89%8B%E6%9C%BA:那麼此時keywords = 手機
            String keywords = UrlEncodeUtil.decode(keywords2, inputEncoding);// “中文”
            // 只保留keywords的前40個字符
            if (keywords.length() > 40) {
                keywords = keywords.substring(0, 40);
            }
            param.setKeywords(keywords);
            param.setGbkKeywords(UrlEncodeUtil.encode(keywords, "GBK"));
        }
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章