问题:
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;
}
此时存到数据库中的就是中文了。