Ajax+JQuery+JSon传输中文字符时,必须注意中文字符的编码解码工作
两种情况:
- 如果页面编码是GBK,则在Jquery+Ajax+Json中传输数据,尤其是中文字符, 则必须注意对中文字符串进行编码封装 , 如:username : encodeURI($username),// 中文必须重新编码 在Servlet接收数据过程中,也必须进行解码工作, 如:String name = java.net.URLDecoder.URLDecoder.decode(request.getParameter("username").trim(),"utf-8");
Jquery.js中代码: 例如: $.validator.setDefaults({ submitHandler : function() { var $username = $("#username").val();// 用户名 var $password = $("#password").val();// 密码 var $email = $("#email").val();// Email var $identify = $("input[name='identify']:checked").val();// 注册身份 var $agree = $("#agree").val();// 验证码
$.post('reg2', { type : 'GET', dataType : 'json', username : encodeURI($username),// 中文必须重新编码 password : $password, email : $email, identify : $identify, agree : $agree, contentType : "application/x-www-form-urlencoded;
charset=utf-8" }, function(data) { // alert($username+"--"+$password+"--"+$email+"--"+ $identify+"--"+$agree+"==="+encodeURI($username)); // alert("测试"); if (data == 0) { alert("验证码输入错误!"); // location.href = "index.jsp"; // event.preventDefault()//防止默认行为(表单提交) } else if (data == 10) { alert("个人用户名已存在!"); } else if (data == 11) { alert("个人用户注册成功!"); location.href = "index.jsp"; } else if (data == 20) { alert("企业用户名已存在!"); } else if (data == 21) { alert("企业用户注册成功!"); location.href = "index.jsp"; } }); } }
- 如果页面编码是utf-8的话,则不必对中文字符串编码,也不用解码工作。 所以,个人建议用utf-8,才省去乱七八糟的乱码编码解码问题!!! Jquery中 username : $username,//中文不必编码 Servlet中 String name = request.getParameter("username").trim();
UTF-8才是王道啊。2012/12/14-21:47 strong text