乱码的原因无非就是编码和解码的码表用的不一致。
输出数据是编码的过程,浏览器是解码的过程
浏览器默认的编码是GBK(也叫GB2312)
而tomcat获取的字符流默认是ISO-8859-1
所以需要设置
package cn.itcast.servlet.web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ResponseDemo1
*/
@WebServlet("/ResponseDemo4")
public class ResponseDemo4 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ResponseDemo4() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取流对象之前设置流的默认编码,默认编码是:ISO-8859-1 设置为GBK
//windows系统下默认浏览器编码为GBK
// response.setCharacterEncoding("utf-8");
//告诉浏览器,服务器发送的消息体数据的编码。建议浏览器使用该编码解码
//浏览器收到这个消息就特别听话,就按照执行了
// response.setHeader("content-type", "text/html;charset=utf-8");
//简单的形式,设置编码
response.setContentType("text/html;charset=utf-8");
//1.获取字符输出流
PrintWriter pw = response.getWriter();
//2.输出数据
pw.write("hello response");
System.out.println();
pw.write("你好 response");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
// this.doGet(request, response);
}
}