解决url乱码问题

我的工程中出现了url传参乱码的问题,通过baidu等,找到解决方法如下。

在接受参数的地方,通过

 

String name= new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");

这样就可以将url编码转会utf-8,因为服务器传参时采用的是ISO-8859-1编码。

 

但是这样在tomcat下好使但是在工程部署的weblogic下依然会出现乱码。

原因我估计应该是weblogic使用的不是ISO-8859-1编码。为了让代码更通用一些,可以在传参前进行编码,之后再解嘛

 

传参前js中:

name= encodeURI(encodeURI(name));

//这里使用了两次编码,一次在tomcat下不好使,不过在weblogic是可以的,为了通用,试用了两次转码

接受参数的java:

String name= java.net.URLDecoder.decode(request.getParameter("name"),"UTF-8");

或者使用js解码:name = decodeURI("<%=ruleName%>")

这样在tomcat和weblogic下都好使。

 

参数“你好”

encodeURI("你好")                          %E4%BD%A0%E5%A5%BD

 encodeURI(encodeURI("你好")  )    %25E4%25BD%25A0%25E5%25A5%25BD

所以在经过url传参时,由于%号属于特殊字符,所以经过一次encodeURI编码后,%将和后面的数字组合进行转义,所以一次转码后会编程乱码,而两次转码后,%变成了%25,经过url传参后%25又被还原成%,成为一个合法的encodeURI编码的字符串,再经过转码就能正常显示了

 

 

方法二:

  

  传参前js中:

   name = escape(escape(name)) 

   接受参数端:

   String name= request.getParameter("name");

   js name=unescape("<%=ruleName%>"));

方法三:

  将上面的encodeURI改为encodeURIComponent也同样好使

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值