项目场景:
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>");