Ajax+JQuery+JSon传输中文字符时,必须注意中文字符的编码解码工作

Ajax+JQuery+JSon传输中文字符时,必须注意中文字符的编码解码工作

两种情况:

  1. 如果页面编码是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";
        }
    });
}

}

  1. 如果页面编码是utf-8的话,则不必对中文字符串编码,也不用解码工作。
    所以,个人建议用utf-8,才省去乱七八糟的乱码编码解码问题!!!
    Jquery中 username : $username,//中文不必编码
    Servlet中 String name = request.getParameter(“username”).trim();

UTF-8才是王道啊。2012/12/14-21:47
strong text

你可能感兴趣的:(jquery,Ajax,json,乱码,utf-8)