直接设置servlet的response的字符集
resp.setContentType(“text/html;charset=UTF-8”);
@WebServlet("/getDate")
public class DateServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
String nowTimeString = dateTimeFormatter.format(now);
PrintWriter writer = resp.getWriter();
writer.write("当前的时间是:" + nowTimeString + "\n");
}
}
可以使用Filter过滤器
@WebFilter("/*")
public class CharacterFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.setContentType("text/html;charset=UTF-8");
filterChain.doFilter(request, response);
}
}
细节的点
在设置 response.setContentType(“text/html;charset=UTF-8”);的时候一定要确保不能在设置之前通过输出流输出内容(这里也包括设置响应头等信息)