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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!