• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JSP对URL链接中的中文乱码处理方法总结

    IE缺省对URL后面的参数是不编码发送的,但是Tomat缺省是按ISO8859-1来进行URL编码的,因此才会出错。

    方法一:

    对URL链接进行二次编码:

    a onclick="javascript:window.open(encodeURI(encodeURI('./DispatchAction.do?efFormEname=FKRY0001code_type=中文参数')))">测试/a>
    

    或者单独对参数进行二次编码:

    var code_type = "中文参数";
    code_type = encodeURI(code_type); 
    code_type = encodeURI(code_type);
    window.open("./DispatchAction.do?efFormEname=FKRY0001code_type="+code_type);
    Service:
    String code_type = request.getParameter("code_type");
    //这句话一定要写,因为如果不写的话编码就是%E5%A6%88%
    code_type = java.net.URLDecoder.decode(code_type,"UTF-8");
    

    有人提出为什么要在客户端对字符串重复编码两次呢?

    如果因为项目需要,不能指定容器使用何种编码规则来解码提交的参数,比如:需要接收来自不同页面,不地编码的参数内容时。 (又或者是开发人员被这有点复杂的东西搞得晕头转向,不懂得如何正确的去做好这接收参数的工作)

    这个时候,在客户端对参数进行二次编码,可以有效的避开“提交多字节字符”的这个棘手问题。

    因为第一次编码,你的参数内容便不带有多字节字符了,成了纯粹的 Ascii 字符串。(这里把编第一次的结果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不带有多字节字符的)

    再编一次后,提交,接收时容器自动解一次(容器自动解的这一次,不管是按 GBK 还是 UTF-8 还是 ISO-8859-1 都好,都能够正确的得到 [STR_ENC1])

    然后,再在程序中实现一次 decodeURIComponent (Java中通常使用 java.net.URLDecoder.decode(***, "UTF-8"))就可以得到想提交的参数的原值。

    简单来说,就是Tomcat服务器会自动帮你做一次URLDecode,再加上你自己在Service代码里面写的URLDecode,一共就是两个Decode了。既然要两次Decode,当然就需要两次Encode了。或许你会问,干脆只Encode一次,然后在java代码里不Decode,呵呵,这个也是不行的,这其实也就是为什么要进行两次Encode的原因吧。

    方法二:(经测试不支持IE8)

    http://xxx.do?ptname=中文参数
    String strPtname = request.getParameter("ptname");
    strPtname = new String(strPtname.getBytes("ISO-8859-1"), "UTF-8");
    

    方法三:

    %@ page contentType="text/html;charset=gb2312" %>
    a href="ds.jsp?url=%=java.net.URLEncoder.encode("编码的是这里","GB2312")%>">点击这里/a>
    %
    //request.setCharacterEncoding("GBK");
    if(request.getParameter("url")!=null)
    {
    str=request.getParameter("url");
    str=java.net.URLDecoder.decode(str,"GB2312");
    str=new String(str.getBytes("ISO-8859-1"));
    out.print(str);
    }
    %>
    

    方法四:
    Tomcat中设置server.xml中的Connector熟悉URIEncoding="UTF-8",确保解码格式与编码格式统一。

    您可能感兴趣的文章:
    • jsp用过滤器解决中文乱码问题的方法
    • JSP利用过滤器解决request中文乱码问题
    • JSP页面中超链接传递中文参数出现乱码问题解决方法
    • JSP中文乱码常见3个例子及其解决方法
    • 分享JSP中文乱码解决方法
    • JSP页面传参出现中文乱码的解决方案
    • jsp之间传参数接受中文有乱码问题解决方法
    • jsp地址栏传中文显示乱码解决方法分享
    • JSP出现中文乱码问题解决方法详解
    上一篇:JSP使用JDBC连接MYSQL数据库的方法
    下一篇:JSP通用高大上分页代码(超管用)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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