解决传递中文参数过程中的乱码问题

1、从jsp中上传中文参数到action,解决乱码问题方法
response.setHeader("refresh","0;URL=/demo/VmListByClassNameAction.action?&className=" +
    java.net.URLEncoder.encode(className,"utf-8"));
这句代码中,参数className是中文参数,当不encode时,在action中获取该参数是乱码,所以当要传递中文参数时,先在jsp代码中调用
java.net.URLEncoder.encode(className,"utf-8"));或者在你的jsp中使用js传递参数到action。
JSP的JS中:中文参数用encodeURI(encodeURI(中文参数)),需要过两次转码:
function show(next,id,realName){ 
document.forms['f2'].action="usersearchNextPage?next="+next+"&id="+id+"&realName="+encodeURI(encodeURI(realName)); 
document.forms['f2'].submit(); 

然后在action的java代码中调用:
String declassName = java.net.URLDecoder.decode(className,"UTF-8");
进行解码。

2、从jsp传递带有中文的参数到另一个jsp中(第一个jsp中提交数据到另一jsp中,在第2个jsp中需要访问该提交数据)
首写这两个jsp中,都需在<%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*" errorPage="" %>中设置contentType属性值为“charset=gb2312”;
再者,在获取提交后的中文参数之前,需要先调用request.setCharacterEncoding("GBK");然后通过request.getParameter("checkCode");(其中checkCode是第一个jsp中元素的id名)。

3、 struts2中action的type为redirect跳转时中文传参乱码问题
解决方法一:
                     struts.xml
<action name="aaction" class="com.soft.web.AAction.class">
   <result name="afterOnView">/pages/aa/aa_view.jsp</result>
   <result name="afterOnSave" type="redirect">
       <param name="location">/aaction!onView.action?am.name=${am.name}</param>
      <param name="encode">true</param>
   </result>
</action>

解决方法二:
     不管是传递什么参数,自己都是写个小方法先加密然后作为参数,然后再接受端转化就行了。 比如统一转化成base64。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值