~本特利~ |
解决中文输出乱码问题
为什么会有乱码问题,实际就是在编码时采用了ISO-8859-1的字符码表,通过使用接口提供的方法可以解决。
1.创建Servlet
项目里编写一个名为的类,在类中定义一个中文字符,然后使用中文输出流输出
public class ChineseServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)throws ServletException, IOException {
//第1种方式
//response.setCharacterEncoding("utf-8");
//response.setHeader("Content-Type","Text/html;charset=utf-8");
//设置字符编码
response.setContentType("text/html;charset=utf-8");
String data = "中国"; //定义一个中文字符
PrintWriter out = response.getWriter();
out.println(data);
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)throws ServletException, IOException {
doGet(request, response);
}
}
2.web.xml中配置映射
<servlet>
<display-name>ChineseServlet</display-name>
<servlet-name>ChineseServlet</servlet-name>
<servlet-class>cn.itcast.chapter04.response.ChineseServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ChineseServlet</servlet-name>
<url-pattern>/ChineseServlet</url-pattern>
</servlet-mapping>
在浏览器中:
总结
解决响应中文乱码方案一(不推荐使用):
// 设置服务器字符集为 UTF-8
resp.setCharacterEncoding("UTF-8");
// 通过响应头,设置浏览器也使用 UTF-8 字符集
resp.setHeader("Content-Type", "text/html; charset=UTF-8");
解决响应中文乱码方案二(推荐):
// 它会同时设置服务器和客户端都使用 UTF-8 字符集,还设置了响应头
// 此方法一定要在获取流对象之前调用才有效
resp.setContentType("text/html; charset=UTF-8");