HttpServletResponse响应中文乱码解决
项目场景:
JavaWeb HttpServletResponse 响应的乱码解决
问题描述:
浏览器接收HttpServletResponse数据中文乱码 例如:
PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>" + "我是一句中文!"+ "</h1>"); out.println("</body></html>");
显示效果:
原因分析:
Tomcat只能以ISO-8859-1码表解码,Tomcat是前后台数据传递的中介,主要支持Http协议,而http协议的底层是tcp协议,以二进制字节流的方式传输数据。
解决方案:
方法一:(不推荐):
// 设置服务器字符集为 UTF-8 resp.setCharacterEncoding("UTF-8"); // 通过响应头,设置浏览器也使用 UTF-8 字符集 resp.setHeader("Content-Type", "text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>" + "我是一句中文!"+ "</h1>"); out.println("</body></html>");
方法二:(推荐):
// 它会同时设置服务器和客户端都使用 UTF-8 字符集,还设置了响应头 // 此方法一定要在获取流对象之前调用才有效 resp.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>" + "我是一句中文!"+ "</h1>"); out.println("</body></html>");