java ajax發送數據到後臺,中文亂碼

//首先說明,個人服務器和頁面編碼都是GBK,因此嘗試了不少種GBK的方式
前臺:
function printFunction(){
                window.print();
                $.ajax({
                     url  : '/tpzssearch/handleRecordLog.action',
                     type : 'post',
                     //各類嘗試
                     //processData : true,
                     //scriptCharset:'GBK',
                     // contentType: 'application/x-www-form-urlencoded; charset=gbk', 
                      //  contentType: "application/x-www-form-urlencoded;charset=gbk",
                     data : {tablename:'<%=java.net.URLEncoder.encode(tablename,"UTF-8")%>',
                             search:'<%= java.net.URLEncoder.encode(session.getAttribute("oradetailQueryString").toString(),"UTF-8")%>',
                             info:'<%=java.net.URLEncoder.encode(rs,"UTF-8")%>'
                             }
                 });
            }

後臺:
//gbk互轉UTF-8試過、ISO-8859-1互轉gbk試過、ISO-8859-1互轉UTF-8試過
public static String toUTF(String arg) {
        if (arg != null && arg.trim().length() > 0) {
            try {
                arg = new String(arg.getBytes("GBK"), "UTF-8");
            } catch (Exception e) {
            }
        } else {
            arg = "";
        }
        return arg;
    }
logModel.setTableName(URLDecoder.decode(request.getParameter("tablename"),"UTF-8"))
最後:就是傳參數時java.net.URLEncoder.encode(tablename,"UTF-8"),接收參數時URLDecoder.decode(request.getParameter("tablename"),"UTF-8"),解決了

解決亂碼的4個方向:javascript

方法一:
在後臺中使用request.setCharacterEncoding("UTF-8");html


方法二:
$.ajax({
    type:'post',
    contentType:'application/x-www-form-urlencoded; charset=UTF-8'
});

方法三:

public static String toUTF(String arg) {
        if (arg != null && arg.trim().length() > 0) {
            try {
                arg = new String(arg.getBytes("GBK"), "UTF-8");
            } catch (Exception e) {
            }
        } else {
            arg = "";
        }
        return arg;
    }java

方法四:ajax

urlencodeURI(url);前臺轉碼一次,java.net.URLDecoder.decode(paperTitle,"UTF-8");後臺也轉碼

 

當由a標籤傳遞數據時,在windows系統可能不會出現中文亂碼,但在Linux系統會出現亂碼,的解決辦法windows

<a href="javascript:location.href='xxxxAction.a?doSearchDetail&brandId=${brandId}&areaId=${areaId}&filialeId=${filialeId}&cityId=${cityId}&brandNameEncode='+encodeURI(encodeURI('${brandName}'))+'&areaNameEncode='+encodeURI(encodeURI('${areaName}'))+'&filialeNameEncode='+encodeURI(encodeURI('${filialeName}'))+'&cityNameEncode='+encodeURI(encodeURI('${cityName}'))+'&isFirst=1';">${dto.qtySum}</a>
String isFirst = req.getParameter("isFirst");
if ("1".equals(isFirst)) {
	brandName = java.net.URLDecoder.decode(req.getParameter("brandNameEncode"),"utf-8");
	areaName = java.net.URLDecoder.decode(req.getParameter("areaNameEncode"),"utf-8");
	filialeName = java.net.URLDecoder.decode(req.getParameter("filialeNameEncode"),"utf-8");
	cityName = java.net.URLDecoder.decode(req.getParameter("cityNameEncode"),"utf-8");
}

注意前段須要兩次轉碼,後臺只須要一次服務器

相關文章
相關標籤/搜索