JSP中文乱码
所有乱码出现的原因都是:前后编码不一致。
URL中文乱码: 示例1:前端encode后端decode-
前端代码
login '>URL中文
-
后端相关代码
@WebServlet(urlPatterns = "/demoServlet") public class DemoServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String queryString = request.getQueryString(); String res = URLDecoder.decode(queryString, "UTF-8"); System.out.println(res); String k1 = request.getParameter("k1"); System.out.println(k1); String k2 = request.getParameter("k2"); res = URLDecoder.decode(k2, "UTF-8"); System.out.println(res); } }
备注:本示例在本地tomcat中测试结果正确
-
前端代码
login URL中文
-
后端相关代码
@WebServlet(urlPatterns = "/demoServlet") public class DemoServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String k1 = request.getParameter("k1"); System.out.println(k1); String k2 = request.getParameter("k2"); String res = new String(k2.getBytes("UTF-8"), "UTF-8"); System.out.println(res); } }
备注:本示例在本地tomcat中测试结果正确
post乱码包含包括post请求乱码、post输出乱码两种情况,解决方案。
-
n前端代码
login 用户名:
-
后端代码
@WebServlet(urlPatterns = "/demoServlet") public class DemoServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8"); String uname = request.getParameter("uname"); System.out.println(uname); PrintWriter out = response.getWriter(); out.write("欢迎您:" + uname); out.flush(); out.close(); } }
-
运行
-
控制台输出结果:
页面结果: