程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 頁面編碼為UTF-8的項目中servlet中文顯示亂碼的解決方法

頁面編碼為UTF-8的項目中servlet中文顯示亂碼的解決方法

編輯:關於JSP
內容提要: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(" 中國網頁設計http://www.xin126.cn-最權威的網頁設計教程站 ");
  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();
 }

運行顯示:??????http://www.xin126.cn-???????????

解決方法:
把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即可。

*
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved