servlet乱码 解决方法 2种方法

时间:2023-03-09 15:00:58
servlet乱码 解决方法 2种方法

public class ResponseDemo1 extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
test1(resp);
}
  
  //方法1:
public void test1(HttpServletResponse resp) throws IOException, UnsupportedEncodingException {
resp.setHeader("Content-type", "text/html;charset=utf-8");
String data = "中国";
OutputStream output = resp.getOutputStream();
//程序以什么编码输出,那么一定要设置浏览为相对应的编码打开.
output.write(data.getBytes("utf-8"));
}
  //方法2:
//模拟meta标签,设置charset为utf-8,这个方法也行. //用html技术中的meta标签模拟了一个http响应头,来控制浏览器的行为
public void test2(HttpServletResponse response) throws Exception{
String data = "中国_第二个";
OutputStream output= response.getOutputStream();
output.write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'>".getBytes());
output.write(data.getBytes());
}
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }

//********************************情况2:*************************************

public class ResponseDemo2 extends HttpServlet {
private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
test1(response); } public void test1(HttpServletResponse response) throws IOException {
// 方法1:
// 要设置response,所使用的码表,以控制reponse以什么码表向浏览器写入数据
// response.setCharacterEncoding("utf-8");
// 同时设置浏览器以何种码表打开,指定浏览以什么 码表打开服务器发送的数据 
// response.setHeader("content-type", "text/html;charset=utf-8");
//  方法2:
response.setContentType("text/html;charset=utf-8"); String data = "中国";
PrintWriter outputStream = response.getWriter();
outputStream.write(data);
} public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response); } }