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。。我该怎么让中文不乱码的传送过来?

前台:

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

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

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

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