AJAX JSON 乱码

网上下了一个JS、功能是把FORM里的内容序列化为JSON、用AJAX方式提交到后台
JS比较小巧
(function ($) {
var formJson = {};
var currentForm = null;

$.fn.form_serialize = function () {
    currentForm = $(this);
    formJson = {};
    var doms = currentForm.find('[name]');
    $.each(doms, function (index, dom) {
        var domName = $(dom).attr('name');
        if (!formJson[domName]) {
            formJson[domName] = { Name: domName, Type: $(dom).attr('type'), Doms: currentForm.find('[name=' + domName + ']') };
        }
    });
    return getResult();
};

var getResult = function () {
    var d = {
        toJson: function () {
            var data = {};
            $.each(formJson, function (key, json) {
                data[key] = getVal(json);
            });
            return data;
        },
    };
    return d.toJson();
}

var getVal = function (json) {
    var methods = {
        getDefaultVal: function (dom) {
            return $(dom).val();
        },
        getSelectVal: function (dom) {
            var val = '';
            var selectType = $(dom).attr('type');
            if (selectType == 'select-multiple') {
                var items = $(dom).val();
                if (items == null) return '';
                for (var i = 0; i < items.length; i++) {
                    val += i == 0 ? items[i] : (',' + items[i]);
                }
                return val;
            } else {
                return $(dom).val();
            }
        },
        getRadioVal: function (dom) {
            return $(dom).attr('checked') ? $(dom).val() : null;
        },
        getCheckBoxVal: function (dom) {
            return methods.getRadioVal(dom);
        }
    };

    var dispacher = function (type, dom) {
        switch (type) {
            case 'text':
            case 'password':
            case 'hidden':
            case 'textarea':
                return methods.getDefaultVal(dom);
            case 'select-one':
            case 'select-multiple':
                return methods.getSelectVal(dom);
            case 'radio':
                return methods.getRadioVal(dom);
            case 'checkbox':
                return methods.getCheckBoxVal(dom);
            default:
                return '';
        }
    };

    var domType = json.Type;
    var doms = $(json.Doms);
    var count = doms.length;
    if (count > 1) {
        var val = '';
        var index = 0;
        for (var i = 0; i < count; i++) {
            var v = dispacher(domType, doms.eq(i));
            if (v == '' || v == null || v == undefined)
                continue;
            val += index++ == 0 ? dispacher(domType, doms.eq(i)) : (',' + dispacher(domType, doms.eq(i)));
        }
        return val;
    } else {
        return dispacher(domType, doms);
    }
};

})(jQuery);
AJAX调用为:
var formjson=$("#main").form_serialize();
$.getJSON(actionnm,formjson, function(data)
到后台后FORM中输入的中文就乱码了
JSP、ACTION应该没问题、因为我改为FORM的SUBMIT提交就没问题
JS中的这段我改了一下
getDefaultVal: function (dom) {
eturn encodeURI(encodeURI($(dom).val()));
},
还是乱码
不知应怎么改?
应改不是那段JS的问题
我改成
var formjson={"wfclient.cname":"字字"};
$.getJSON(actionnm,formjson, function(data)
也不行

ajax用post的方式提交 可以避免上述问题

jQuery是可以设置编码的,

在ajax这个函数里有个参数

你这种方法,是先编码,再解码的方式

还是我说的那个方法,你找到jQuery发送请求的那个函数,
$.ajax 这个函数里面有个参数,你可以找一下