JAVA 中URL中文参数乱码的处理方法(汇总)

解决输入的全角汉字或者日文在URl中乱码的问题。以下我的实现

  
  
  1.   JS代码:
  2.   function shiborikomuFw() {
  3.       var url = '${url08}';
  4.       var str = document.getElementsByName('fw');
  5.       //Str str = document.getElementsById('fw').Value;
  6.       for (var i = 0; i < str.length; i++) {
  7.       url = url + "&fw=" + encodeURI(str[i].value);
  8.       }
  9.       window.location.href = url;
  10.   }
  11.   JAVA代码:
  12.   String fw = (String) form.fw;
  13.   if (fw != null && !"".equals(fw)) 
  14.     {
  15.       try 
  16.         {
  17.           fw = new String(fw.getBytes("ISO-8859-1"),"UTF-8");
  18.           // fw = java.net.URLDecoder.decode(fw, "UTF-8");
  19.           form.fw = fw;
  20.       } 
  21.         catch (Exception e) {}
  22.   }

  这样就解决问题了,在其他情况下也会有乱码,以下转自网络的各种解决方法。做个记号,方便大家查阅。

  方法一:

  
  
  1. http://xxx.do?ptname='我是中国人'
  2. String strPtname = request.getParameter("ptname");
  3. strPtname = new String(strPtname.getBytes("ISO-8859-1"), "UTF-8");

  方法二:

  
  
  1. <%@ page contentType="text/html;charset=gb2312" %>
  2. <%
  3.   //request.setCharacterEncoding("GBK");
  4.   if(request.getParameter("url")!=null)
  5.   {
  6.       str=request.getParameter("url");
  7.       str=java.net.URLDecoder.decode(str,"GB2312");
  8.       str=new String(str.getBytes("ISO-8859-1"));
  9.       out.print(str);
  10.   }
  11. %>
  12. ==================================
  13.   public String chinatoString(String str)
  14.   {
  15.       String s=str;
  16.       try
  17.       {
  18.           byte tempB[]=s.getBytes("ISO-8859-1");
  19.           s=new String(tempB);
  20.           return s;
  21.       }
  22.       catch(Exception e)
  23.       {
  24.           return s;
  25.       }
  26.   }
  27. ====================================================
  28.   function URLencode(sStr){

  29.       return escape(sStr).
  30.       replace(//+/g, '%2B').
  31.       replace(//"/g,'%22').
  32.       replace(//'/g, '%27').
  33.       replace(g,'%2F');
  34.   }

  方法三:

  如果用jstl的话,可以自己写一个el的function,调用URLEncoder.encode来编码。

  IE缺省对URL后面的参数是不编码发送的,但是tomat缺省是按ISO8859-1来进行URL解码,因此才会出现上述错误。好的做法是:

  1、在URL参数中确保用UTF-8编码之,方法可以用js函数encodeURI(),或调用自定义的el function;

  2、设置server.xml中的Connector熟悉URIEncoding="UTF-8",确保解码格式与编码格式统一;

  方法四:

  在action中,

  
  
  1. String s=request.getParameter("s");
  2. s=new String(s.getBytes("iso-8859-1"),"gbk");

  四种方法应该都没问题,我已经测试过了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值