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>");
经验分享 程序员 微信小程序 职场和发展