//首先說明,個人服務器和頁面編碼都是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"); }
注意前段須要兩次轉碼,後臺只須要一次服務器