`
atell
  • 浏览: 161672 次
  • 性别: 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"));
        }
 
分享到:
评论

相关推荐

    Java Web文件下载,解决了使用IE11下载文件时所出现的乱码问题

    本项目针对的一个重要问题就是如何在使用IE11浏览器时避免出现文件名乱码的情况。 首先,我们要理解这个问题的根源。IE11在处理非ASCII字符的文件名时,可能会由于编码不一致导致乱码。这是因为不同的系统和浏览器...

    深入UTF8字符编码.pdf

    JAVA编译器默认使用系统默认编码进行源代码文件的读取和编译,但在复杂环境中,手动设置编码至如UTF-8这样更为通用的格式,能有效避免因编码不匹配导致的问题。 ### MySQL的UTF-8字符编码 在数据库领域,尤其是...

    jsp使用URL编码传递中文参数问题.doc

    Java中的`java.net.URLEncoder.encode()`方法用于将字符串按照UTF-8编码格式转换为适合URL的格式。在`a.jsp`中,我们看到`str_test`变量被编码并插入到URL中。 2. **字符编码问题**:在Web应用中,浏览器、服务器...

    JSP对URL链接中的中文乱码处理方法总结.docx

    在服务端,可以使用 java.net.URLDecoder.decode() 函数来解码参数。 方法二:对参数进行单独编码 这种方法是通过对参数进行单独编码来避免中文乱码问题。例如: xxx.dtoptname=中文参数 String strPtname = ...

    Weblogic in Chinese Env.pdf

    - **UTF-8**:英文字符占用一个字节,中文字符通常占用两到三个字节。UTF-8是目前互联网上最常用的一种编码方式,能够兼容ASCII,并支持全世界几乎所有的字符集。 - **GB2312**:英文字符占一个字节,中文字符占两个...

    字符乱码de.docx

    IE浏览器的“总以UTF-8方式发送URL地址”选项仅影响URL路径部分,不改变查询字符串的编码,查询字符串仍使用系统默认编码(如GBK)。 4. **Tomcat的server.xml配置**: Tomcat的`server.xml`中的`URIEncoding`...

    中文乱码解决方案参考.pdf

    4. **地址栏输入中文参数**:这是个特殊问题,因为IE6有一个“以UTF-8发送URL”的选项,如果关闭此选项,IE6将以系统默认编码(可能是GBK或其他编码)发送URL,导致服务器端接收乱码。 解决这类问题的一个关键是...

    Ajax uri 乱码问题总结

    - **Firefox (FF)**:与IE不同,FF 默认使用UTF-8编码处理URI,因此在FF下使用GBK编码可能会导致乱码。为确保兼容性,通常需要将服务器配置为支持UTF-8。 2. **服务器配置**: - **Tomcat配置**:在Tomcat的`...

    jsp中文乱码问题小结

    JSP中文乱码问题是一个常见的开发难题,主要涉及客户端、服务器端以及数据库等多个环节。本文将深入探讨这个问题,并提供相应的解决方案。 首先,我们要理解中文乱码的根源。在Java(包括JSP)中,中文字符可能出现...

    JSP在Servlet中的几个编码的作用及原理 .txt

    假设有一个简单的JSP页面,其源代码编码格式为GBK,但是页面中指定了`pageEncoding="UTF-8"`,并且在页面中使用了中文字符。此时,如果客户端使用IE浏览器访问该页面,则可能出现以下情况: - 如果没有设置`...

    javaweb乱码

    2. **使用过滤器**:为了避免在每个页面都需要手动设置编码,可以创建一个`Filter`类,如`SetCodeFilter`,在过滤器中统一设置请求编码。在`web.xml`中配置这个过滤器,让它应用于所有`.jsp`和`.do`请求,从而简化...

    JS的encodeURI和java的URLDecoder.decode使用介绍

    在使用此方法时,需要指定正确的字符编码格式(如UTF-8或GBK),以保证解码结果正确。使用示例如下: ```java HttpServletRequest request = ServletActionContext.getRequest(); String encodedString = request....

    字符乱码de.pdf

    在Java的Web应用中,处理request对象中的中文参数是一个常见的挑战,尤其是在JSP中使用`request.getParameter()`时可能会出现乱码问题。这个问题的复杂性主要源于字符编码在多个环节的转换过程中可能出现不一致,...

    servlet中文乱码问题

    - 这样设置后,浏览器将自动使用GBK编码来解码URL中的中文字符,从而避免乱码问题。 - **验证方法**:更改前,在IE浏览器中,选择“查看 | 编码”,可以看到“西欧(ISO)”被选中;更改后,“简体中文(GB2312)”将...

    JQuery中Ajax的Post提交在IE下中文乱码的解决方法

    在Java代码中,使用`URLDecoder.decode()`函数对接收到的参数进行解码,指定编码格式为UTF-8。 ```java String inputStr = request.getParameter("sname"); inputStr = URLDecoder.decode(inputStr, "UTF-8"); ``` ...

    Ajax乱码小结

    例如,如果客户端使用UTF-8编码,而服务器端默认使用GBK,则会出现乱码。 2. **POST请求乱码**: - POST请求的参数是放在请求体中的,不会像GET那样直接显示在URL中。 - POST请求的乱码问题通常出现在请求头的`...

    ajax异步请求小结

    - IE使用GBK编码,其他浏览器使用UTF-8。在服务器端设置编码(如Tomcat的`<Connector URIEncoding="utf-8" />`),同时在JavaScript中使用`encodeURI()`函数对中文参数进行UTF-8编码。 通过理解和掌握这些Ajax的...

    google search client api for c/c++

    内置gbk/utf-8编码/解码器(包含GBK编码表) 采用Pure C编写,采用标准C接口. 支持http代理. 用户需要在http://api.google.com/createkey申请key 演示程序中的key是一个网友给我的,仅供测试用,演示程序中的代理...

Global site tag (gtag.js) - Google Analytics