JavaWeb-服务器输出字符数据到浏览器乱码-分析和解决
服务器输出字符数据到浏览器
使用步骤
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1. 获取字符输出流对象
PrintWriter pw = resp.getWriter();
// 2. 输出数据到浏览器
pw.write("<h1>hello response</h1>");
}
乱码原因分析
getWriter()默认获取流的编码为ISO-8859-1,则编码字符时的编码是ISO-8859-1。而客户端默认编码(windows平台)是GBK,解码采用的编码是GBK2313,编码不一致。
示意: 浏览器(GBK2312) <-----编码不一致------服务器(ISO-8859-1)
乱码问题解决
设置服务器响应的流采用的编码和客户端采用编码一致。
在使用流对象输出之前,设置编码
// 获取流对象之前,设置字符编码
resp.setCharacterEncoding("utf-8");
// 服务器告诉浏览器,发送消息采取的编码格式,建议浏览器使用该格式编码
resp.setHeader("content-type","text/html;charset=utf-8");
// 优化上述书写: 简单形式,设置编码
resp.setContentType("text/html;charset=utf-8");
说明: resp.setContentType("text/html;charset=utf-8");
表示设置流对象采用的编码为utf-8
,同时建议浏览器采用编码也为utf-8
。
[视频]
来源: 博客园
作者: 茶哩哩
文章: 转载请注明原文链接:https://www.cnblogs.com/martin-1/p/15805901.html