彻底解决ajax及后端中文乱码问题

前端发送带中文的数据:

	var searchText = "英语";
    //通过URL传递:需要编码两次
    searchText = encodeURI(searchText);
    searchText = encodeURI(searchText);
    $.ajax({
        type: 'GET',
        url: 'search.action' + "?searchText=" + searchText,
        data: '',
        contentType: 'text/json,charset=utf-8',
        dataType: 'json',
        success: function (data) {
        }
    });
	var searchText = "英语";
    //通过ajax数据传递:只需编码一次~
    searchText = encodeURI(searchText);
    $.ajax({
        type: 'GET',
        url: 'search.action',
        data: {searchText:searchText},
        contentType: 'text/json,charset=utf-8',
        dataType: 'json',
        success: function (data) {
        }
    });

后端接收中文数据:

//都只要反编码一次就行了
queryCon=URLDecoder.decode(queryCon,"utf-8");

后端返回带中文的json数据:

//只需对中文的内容进行编码,如果对整个json字符串进行编码,json中的“”等字符也会被编码导致前端解析json错误
URLEncoder.encode("中文内容","utf-8");

前端解析带中文的json数据:

	$.ajax({
        type: 'GET',
        url: 'search.action',
        data: {searchText:searchText},
        contentType: 'text/json,charset=utf-8',
        dataType: 'json',
        success: function (data) {
            //对应的也只需要对中文进行反编码,例如data.name是中文内容
            alert(decodeURI(data.name));
        }
    });

前端的一些编码方法:



总结:
escape:已经废弃,不推荐使用!!!,而且无法对“/”编码,服务器会报错
encodeURIComponent:传递参数时需要使用encodeURIComponent,推荐使用
encodeURI:用来对请求的URL编码的,不是对请求的参数编码。

你可能感兴趣的:(彻底解决ajax及后端中文乱码问题)