Servlet 响应数据出现乱码
响应数据
- 字符输出流
- getWrite() 向客户输出字符
- 字节输出流
- getOutputStream() 向客户输出任意内容
字节流
package com.example.servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
/**
* 响应数据
* 字符输出流
* getWrite() 向客户输出字符
* 字节输出流
* getOutputStream() 向客户输出任意内容
* <p>
* <p>
* 注:两方法不能同时使用
*/
@WebServlet("/s2")
public class Servlet02 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置一个响应头
resp.setHeader("content-type", "text/html");
/**
* 字节流
*/
ServletOutputStream out = resp.getOutputStream();
out.write("<h1>hello 02</h1>".getBytes(StandardCharsets.UTF_8));
out.close();
}
}
- 字符流
package com.example.servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
/**
* 响应数据
* 字符输出流
* getWrite() 向客户输出字符
* 字节输出流
* getOutputStream() 向客户输出任意内容
* <p>
* <p>
* 注:两方法不能同时使用
*/
@WebServlet("/s1")
public class Servlet01 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置一个响应头
resp.setHeader("content-type", "text/html");
/**
* 字符流
*/
PrintWriter writer = resp.getWriter();
writer.write("<h1>hello 01</h1>");
writer.close();
}
}
- 响应数据出现乱码
package com.example.servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
/**
* 响应数据出现乱码
* 乱码原因:
* 有中文
* 编码不一致
* 乱码情况:
* 1.字符输出流必乱码
* 2 字节输出流可能乱码
* 解决方案
* 1.客户端与服务端一致
*/
@WebServlet("/s3")
public class Servlet03 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/* //设置服务端编码格式
resp.setCharacterEncoding("utf-8");
//设置客户端编码格式
resp.setHeader("content-type", "text/html;charset=utf-8");
//同时设置服务端和客户端的编码格式*/
resp.setContentType("text/html;charset=utf-8");
/**
* 字节流
*/
ServletOutputStream out = resp.getOutputStream();
out.write("<h1>你好 02</h1>".getBytes(StandardCharsets.UTF_8));
out.close();
}
}
//同时设置服务端和客户端的编码格式*/
package com.example.servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
/**
* 响应数据出现乱码
* 乱码原因:
* 有中文
* 编码不一致
* 乱码情况:
* 1.字符输出流必乱码
* 2 字节输出流可能乱码
* 解决方案
* 1.客户端与服务端一致
*/
@WebServlet("/s4")
public class Servlet04 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/* //设置服务端编码格式
resp.setCharacterEncoding("utf-8");
//设置客户端编码格式
resp.setHeader("content-type", "text/html;charset=utf-8");
//同时设置服务端和客户端的编码格式*/
resp.setContentType("text/html;charset=utf-8");
/**
* 字符流
*/
PrintWriter writer = resp.getWriter();
writer.write("<h1>你好 01</h1>");
writer.close();
}
}
* 响应数据出现乱码
- 乱码原因:
- 有中文
- 编码不一致
- 乱码情况:
- 1.字符输出流必乱码
- 2 字节输出流可能乱码
* 解决方案
- 1.客户端与服务端一致