2 glzmzd glzmzd 于 2015.06.04 10:30 提问

js传输中文乱码的问题求解

js:

 var namepass = document.getElementById("btn").name; 

//var namepass =escape(namepasss)  此处用escape的话,后台页面接收为null,是为什么?

  f1.action = "<%=request.getContextPath()%>/noticeController.do?cmd=jump&stamp=1&name="+namepass;
            f1.submit();
            }

Java

  String name=request.getParameter("name");

此处NAME就变成乱码了。。如果在js页面中用escape的话此处Name的值就变成了null。。我该怎么让中文不乱码的传送过来?

4个回答

tongyi55555
tongyi55555   2015.06.04 10:47
已采纳

前台:

 namepass = encodeURI(encodeURI(namepass));
 f1.action = "<%=request.getContextPath()%>/noticeController.do?cmd=jump&stamp=1&name="+namepass;
            f1.submit();
            }

后台:
需要引入import java.net.URLDecoder;

    String name = request.getParameter("name");
    name = URLDecoder.decode(name, "UTF-8");
bdmh
bdmh   Ds   Rxr 2015.06.04 10:38

前端传输时,可以将中文两次encode(JavaScript方法),后台接收时
java.net.URLDecoder.decode(request.getParameter("name"), "UTF-8")

glzmzd
glzmzd var a=encode(namepass);var b=encode(a); 后台: String name=java.net.URLDecoder.decode(request.getParameter("name"), "UTF-8"). 是这个样么?
2 年多之前 回复
bdmh
bdmh   Ds   Rxr 2015.06.04 10:51

javascript方法是 encodeURI,两次 encodeURI( encodeURI(xxx));
selvlet中接收时
java.net.URLDecoder.decode(request.getParameter("name"), "UTF-8")

beacon_2011
beacon_2011   Rxr 2015.06.04 13:10

URLDecoder.decode(name, "UTF-8");

Csdn user default icon
上传中...
上传图片
插入图片