Ajax使用POST提交中文乱码问题

时间:2022-12-24 13:05:54
页面使用jquery底层ajax实现,传到后台中文是乱码。
页面js
 var mbmc=document.getElementById('mbmc').value;
var ygbh=document.getElementById('dl_ygbh').value;
var url="/abc/abc/abc/abc.do?operFlag=orNotIn";
showD();
Jquery.post(url,{operFlag:'orNotIn',mbmc:mbmc,ygbh:ygbh},function(data){
if(data=="1"){
alert("该模板已经存在,请重新输入!")
}else{
//略                                                      }
closeD();
});

后台java代码:

public ActionForward orNotIn(ActionMapping mapping, YgxxzhcxListForm ygxxzhcxListForm,
HttpServletRequest request, HttpServletResponse response){
response.setCharacterEncoding("UTF-8");
String mbmc=request.getParameter("mbmc");
String ygbh=request.getParameter("ygbh");
                //其他省略
。。。
}

现在就是mbmc这个变量传过来是乱码,sql执行的结果就不对了,请问怎么解决?

12 个解决方案

#1


另外页面编码方式是gbk,但是我改成response.setCharacterEncoding("gbk");
结果也是乱码。

#2


我以前用的是过滤器,把编码方式全部改成了GBK,结果就没有乱码了。。。

#3


你那样不行

#4


解决了
Jquery.post(url,{operFlag:'orNotIn',mbmc:encodeURI(mbmc),ygbh:ygbh},function(data){}


String mbmc = java.net.URLDecoder.decode(request.getParameter("mbmc"), "UTF-8");
String ygbh = java.net.URLDecoder.decode(request.getParameter("ygbh"), "UTF-8");

#5


前台encodeURIComponent("string")编码
后台再解码

#6


就是,这个需要在前台进行encodeURI()后台用decodeURI()来进行处理

#7


引用 4 楼 sichongxing 的回复:
解决了
Jquery.post(url,{operFlag:'orNotIn',mbmc:encodeURI(mbmc),ygbh:ygbh},function(data){}


String mbmc = java.net.URLDecoder.decode(request.getParameter("mbmc"), "UTF-8");
String ygbh = java.net……

自己解决了甚好~~
public ActionForward orNotIn(ActionMapping mapping, YgxxzhcxListForm ygxxzhcxListForm,
            HttpServletRequest request, HttpServletResponse response){
response.setCharacterEncoding("UTF-8");//不是response 是request 
        String mbmc=request.getParameter("mbmc");
        String ygbh=request.getParameter("ygbh");
                //其他省略
。。。
}

#8


decodeURI(result)

#9



兄弟, 这里楼主没有错、、、

问题在于ajax的URL, 你定义URL的时候不能接参数, 只要URL里面有参数,就是get方式, 哪怕你后面用了post,实际上它还是get请求!这一点我是深有体会的。
引用 7 楼 fanchuanzhidu 的回复:
引用 4 楼 sichongxing 的回复:

解决了
Jquery. post(url,{operFlag:'orNotIn',mbmc:encodeURI(mbmc),ygbh:ygbh},function(data){}


String mbmc = java.net.URLDecoder.decode(request.getParameter("mbmc"), "UTF-8……

#10


引用 7 楼 fanchuanzhidu 的回复:
引用 4 楼 sichongxing 的回复:

解决了
Jquery.post(url,{operFlag:'orNotIn',mbmc:encodeURI(mbmc),ygbh:ygbh},function(data){}


String mbmc = java.net.URLDecoder.decode(request.getParameter("mbmc"), "UTF-8……

自己解决的问题印象最深刻!顶!

#11


猛一看, 发现7楼的建议是对的............
不过确实URL里面有参数的都是get请求

#12


首先需要对字符串进行编码,获取后在进行字符串的解码操作

#1


另外页面编码方式是gbk,但是我改成response.setCharacterEncoding("gbk");
结果也是乱码。

#2


我以前用的是过滤器,把编码方式全部改成了GBK,结果就没有乱码了。。。

#3


你那样不行

#4


解决了
Jquery.post(url,{operFlag:'orNotIn',mbmc:encodeURI(mbmc),ygbh:ygbh},function(data){}


String mbmc = java.net.URLDecoder.decode(request.getParameter("mbmc"), "UTF-8");
String ygbh = java.net.URLDecoder.decode(request.getParameter("ygbh"), "UTF-8");

#5


前台encodeURIComponent("string")编码
后台再解码

#6


就是,这个需要在前台进行encodeURI()后台用decodeURI()来进行处理

#7


引用 4 楼 sichongxing 的回复:
解决了
Jquery.post(url,{operFlag:'orNotIn',mbmc:encodeURI(mbmc),ygbh:ygbh},function(data){}


String mbmc = java.net.URLDecoder.decode(request.getParameter("mbmc"), "UTF-8");
String ygbh = java.net……

自己解决了甚好~~
public ActionForward orNotIn(ActionMapping mapping, YgxxzhcxListForm ygxxzhcxListForm,
            HttpServletRequest request, HttpServletResponse response){
response.setCharacterEncoding("UTF-8");//不是response 是request 
        String mbmc=request.getParameter("mbmc");
        String ygbh=request.getParameter("ygbh");
                //其他省略
。。。
}

#8


decodeURI(result)

#9



兄弟, 这里楼主没有错、、、

问题在于ajax的URL, 你定义URL的时候不能接参数, 只要URL里面有参数,就是get方式, 哪怕你后面用了post,实际上它还是get请求!这一点我是深有体会的。
引用 7 楼 fanchuanzhidu 的回复:
引用 4 楼 sichongxing 的回复:

解决了
Jquery. post(url,{operFlag:'orNotIn',mbmc:encodeURI(mbmc),ygbh:ygbh},function(data){}


String mbmc = java.net.URLDecoder.decode(request.getParameter("mbmc"), "UTF-8……

#10


引用 7 楼 fanchuanzhidu 的回复:
引用 4 楼 sichongxing 的回复:

解决了
Jquery.post(url,{operFlag:'orNotIn',mbmc:encodeURI(mbmc),ygbh:ygbh},function(data){}


String mbmc = java.net.URLDecoder.decode(request.getParameter("mbmc"), "UTF-8……

自己解决的问题印象最深刻!顶!

#11


猛一看, 发现7楼的建议是对的............
不过确实URL里面有参数的都是get请求

#12


首先需要对字符串进行编码,获取后在进行字符串的解码操作