js代替表单提交带中文的参数出现乱码的解决办法

问题:

js代码:
           $("document").ready(function() {
  $("#reset").click(function(){
  // $("#name").val("");
   $("#truename").val("");
   $("#phone").val("");
   $("#qq_msn").val("");
  });
  $("#submit").click(function() {
  
   var Chinese =/^[\u0391-\uFFE5]{2,4}$/;
   var truename = $("#truename").attr("value");
   var phone = $("#phone").attr("value");
   var qq_msn = $("#qq_msn").attr("value");
   if(truename==""){alert("真实姓名不能为空!");return false;}
   else if(phone==""){alert("电话不能为空!");return false;}
   if(truename!=null){
          if(!Chinese.exec(truename)){
              alert("真实姓名只能为2-4个汉字");
          }else {
           //字符解码
           alert(truename);//此处显示还是中文
           var url="?trueName="+truename+"&mphone="+phone+"&qqmsn="+qq_msn;
           window.location ="<%=path%>/update_UserInfo.action"+url;
          }
    }
   })
 });

 

action中代码:

User user = new User();
  user = (User)session.get("user");
  try{
 user.setTrueName(model.getTrueName());
  user.setMphone(model.getMphone());
  user.setQqmsn(model.getQqmsn());
  System.out.println(model);
  getService().update(user);
  //将user重新放回session中
  session.put("user", user);
  return SUCCESS;
  }catch(Exception e){
   return ERROR;
  }

页面和后台都是用utf-8编码,但数据库和model输出还是出现了乱码。解决办法就是:

在js代码中对url进行编码:

url = encodeURI(url);

然后再action中解码:

System.out.println(new String(model.getTrueName().getBytes("ISO-8859-1"),"utf-8"));

 

完整代码:

js代码:

 $("document").ready(function() {
  $("#reset").click(function(){
  // $("#name").val("");
   $("#truename").val("");
   $("#phone").val("");
   $("#qq_msn").val("");
  });
  $("#submit").click(function() {
  
   var Chinese =/^[\u0391-\uFFE5]{2,4}$/;
   var truename = $("#truename").attr("value");
   var phone = $("#phone").attr("value");
   var qq_msn = $("#qq_msn").attr("value");
   if(truename==""){alert("真实姓名不能为空!");return false;}
   else if(phone==""){alert("电话不能为空!");return false;}
   if(truename!=null){
          if(!Chinese.exec(truename)){
              alert("真实姓名只能为2-4个汉字");
          }else {
              alert(truename);
           var url="?trueName="+truename+"&mphone="+phone+"&qqmsn="+qq_msn;
           url = encodeURI(url);
           window.location ="<%=path%>/update_UserInfo.action"+url;
          }
    }
   })
 });

action代码:


  //从session中的拿到user对象
  User user = new User();
  user = (User)session.get("user");
  try{
  user.setTrueName(new String(model.getTrueName().getBytes("ISO-8859-1"),"UTF-8"));
  user.setMphone(model.getMphone());
  user.setQqmsn(model.getQqmsn());
  System.out.println(model);
  getService().update(user);
  //将user重新放回session中
  session.put("user", user);
  return SUCCESS;
  }catch(Exception e){
   return ERROR;
  }
 

此时存到数据库中的就是中文了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值