網頁

2017/8/17

Java Servlet PrintWriter 中文亂碼

在Java Servlet中使用PrintWriter將中文字串寫出時,常會碰到寫出的內容變成亂碼,這是因為在用PrintWriter寫出之前沒有設定回應物件的編碼(encoding)。

要解決這個問題只要在寫出之前,先執行下面的程式碼,就可解決中文寫出亂碼的問題了。


response.setContentType("text/html; charset=utf-8");

參考下面範例程式...


public class MyServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;
       
    public MyServlet() {
        super();
    }

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=utf-8"); // 避免PrintWriter寫出中文時出現亂碼
    
    PrintWriter out = response.getWriter();

    out.println("歡迎光臨!!");

    out.flush();
    out.close();
  }

}

要注意範例程式中,瀏覽器編碼為UTF-8,傳來request的jsp文件編碼為UTF-8,Eclipse的編輯設定也為UTF-8。

如果仍出現亂碼的話,那可能是上面的設定的編碼不一致。

如果覺得文章有幫助的話還幫忙點個Google廣告,感恩。

沒有留言:

張貼留言