前段时间,做了各项目,要实现两个form表单的提交,于是就用了get的方式提交,提交到action中的时候出现乱码问题 ,于是就苦苦追寻这个解决方案。
这里总结一下:
<form id="fom1">
<input type="text" name ="name"/>
<input type=“button” onclick="javascript:submit2form():">
</form>
<form id="form2">
//表单内容
</form>
这种方式提交一般会引起中文乱码的
<script>
function submit2form(){
var s1 = $("#form1").serialize();
var s2 = $("#form2").serialize();
location.href="/jspapp/app.action?"+ s1+"?"+s2;
}
</script>
解决这个问题
可以使用encodeURI 和URLDecode
var s1 = $("#form1").serialize();
var s2 = $("#form2").serialize();
var postdata=encodeURI(s1+"?"+s2);
window.location.href="/jspapp/app.action?"+postdata;
在获取对象字符串的地方,在解码,一般是在pojo的get方法里。
public void setName(String name){
this.name=name;
}
public String getName(){
try {
return URLDecoder.decode(name, "UTF-8");
// return new String(name.getBytes("iso-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
这样是比较保险的一种解决乱码的问题。
2、
就是不要encodeURI和URLDecoder的方式,如果传参的方式是get方法,用 // return new String(name.getBytes("iso-8859-1"),"UTF-8");转一下就可以了。