servlet PrintWriter out = response.getWriter() out.write() 中文乱码
本文系作者经验总结。作者邮箱:547317812@qq.com
一、问题描述
在使用Servlet
通过out.write()
回写数据时,如果字符串中含有中文,会出现中文乱码的问题。
二、解决办法
在Servlet
的post
和get
方法中,方法开始就加入3行代码:
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
举例:
@WebServlet("/ajax/test.do")
public class AjaxServlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
User user = new User();
user.setId(1);
user.setUserName("547317812@qq.com");
user.setPassword("123456");
user.setNickName("哪吒");
user.setEmployer("天庭");
user.setPosition("中坛元帅");
RespBody respBody = new RespBody();
respBody.setCode(0);
respBody.setMsg("请求成功");
respBody.setData(user);
String respJSON = JSON.toJSONString(respBody);
response.getWriter().write(respJSON);
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
this.doPost(request, response);
}
}
问题可破!