问题描述
- 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");
时间: 2024-11-03 10:26:07