当前位置:首页 > JSP教程 >

页面编码为UTF-8的项目中servlet中文显示乱码的解决方法

发布时间:2021-04-30 10:34:51 作者:佚名 阅读:(28)

内容提要:servlet中文显示乱码:
1、servlet中输出中文字符
2、servlet接收表单传值并显示,表单字段含中文。

servlet中文显示乱码:

第一种情况:servlet中输出中文字符,如:

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
  out.println("<HTML>");
  out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
  out.println("  <BODY>");
  out.print(" 吾爱编程https://www.itbiancheng.com编程入门-编程语言教程-网络编程技术分享");
  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();
 }

运行显示:??????https://www.itbiancheng.com???????????

解决方法:
把response.setContentType("text/html");改为response.setContentType("text/html;charset=UTF-8");

第二种情况:servlet接收表单传值并显示,表单字段含中文。

如:
public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  response.setContentType("text/html;charset=UTF-8");
  request.setCharacterEncoding("UTF-8");

  PrintWriter out = response.getWriter();
  out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
  out.println("<HTML>");
  out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
  out.println("  <BODY>");
  String name=request.getParameter("name");//接收表单传递的参数值,含中文。
  out.println("hello "+name);
  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();
 }

解决方法:在servlet程序中加上以下代码就可以了:
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");

如果页面编码是gb2312只需将以上代码中的UTF-8换成gb2312即可。

欢迎分享转载→ 页面编码为UTF-8的项目中servlet中文显示乱码的解决方法

© 2015-2021 - 吾爱编程网 版权所有 苏ICP备18033726号-1关于我们 - 网站声明 - 联系我们