在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廣告,感恩。
沒有留言:
張貼留言