`
atell
  • 浏览: 158969 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

[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"));
        }
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics