java ajax传值到后台_java ajax发送数据到后台,中文乱码

该博客主要探讨了在GBK编码环境下,前后端交互时遇到的中文乱码问题。作者尝试了多种解决方案,包括设置请求头的字符编码、后台字符串转换方法以及URL编码解码等。最终,通过在后台设置request的字符编码,以及在前端和后台进行适当的URL编码解码,成功解决了乱码问题。这个过程涉及到了前端Ajax请求、后台处理以及不同系统环境(如Windows和Linux)下的差异。
摘要由CSDN通过智能技术生成

//首先说明,我的服务器和页面编码都是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:'',

search:'',

info:''

}

});

}

后台:

//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个方向:

方法一:

在后台中使用request.setCharacterEncoding("UTF-8");

方法二:

$.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;

}

方法四:

urlencodeURI(url);前台转码一次,java.net.URLDecoder.decode(paperTitle,"UTF-8");后台也转码

当由a标签传递数据时,在windows系统可能不会出现中文乱码,但在Linux系统会出现乱码,的解决办法

${dto.qtySum}

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");

}

注意前段需要两次转码,后台只需要一次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值