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

[视频]

posted @ 2022-01-14 23:57  茶哩哩  阅读(252)  评论(0编辑  收藏  举报