Fork me on GitHub

HttpServletResponse 输出的中文乱码问题

首先,response返回有两种,一种是字节流outputstream,一种是字符流printwrite。接下面我从这两方面在解决这个HttpServletResponse 输出的中文乱码问题。

申明: 这里所有输出都统一用UTF-8编码。

  • 字节流outputstream

​ 流程:要输出“孤城落寞博客”,给输出流的必须是转换为utf-8的“孤城落寞博客”,还要告诉浏览器,用utf8来解析数据

1
2
3
4
5
6
7
8
9
/**
* 设置请求头,告诉浏览器响应的内容是用 UTF-8 编码的 Html
*/
response.setHeader("Content-type", "text/html;charset=UTF-8");
String data = "孤城落寞博客";
/**
* 放入流的数据是utf8格式
*/
response.getOutputStream().write(data.getBytes("UTF-8"));
  • 字符流printwrite

流程:要输出“孤城落寞博客”,需要设置response.setCharacterEncoding(“UTF-8”);

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* 设置请求头,告诉浏览器响应的内容是用 UTF-8 编码的 Html
*/
response.setHeader("Content-type","text/html;charset=UTF-8");
/**
* 告诉 Servlet 用UTF-8编码。而不是默认的 IS08859
*/
response.setCharacterEncoding("UTF-8");
/**
* 告诉 Servlet 返回的内容是 Html
*/
String data = "孤城落寞博客";
PrintWriter pw = response.getWriter().write(data);

常见问题

  • 如果中文返回出现??字符,这表明没有加response.setCharacterEncoding(“UTF-8”);这句话。
  • 如果返回的中文是“烇湫”这种乱码,说明浏览器的解析问题,应该检查下是否忘加response.setHeader(“Content-type”, “text/html;charset=UTF-8”);这句话。

本文标题:HttpServletResponse 输出的中文乱码问题

文章作者:孤城落寞

发布时间:2019年02月20日 - 17:12:38

最后更新:2019年02月21日 - 22:03:48

原始链接:https://blog.gclmit.club/archives/da217744.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。



-------------本文结束 感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!