向頁面響應的方法:
* getOutputStream();
* getWriter();
*** 這兩個方法是互斥的.**
* 做出響應的時候只能使用其中的一種流響應.
* 輸出中文亂碼的處理:
* 字節流:
* 設置瀏覽器默認打開的編碼:
* resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
* 設置中文字節取出的時候編碼.
* “中文”.getBytes(“UTF-8”);
* 字符流:
* 設置瀏覽器打開的時候的編碼
* resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
* 設置response的緩衝區的編碼
* response.setCharacterEncoding(“UTF-8”);
***** 簡化的寫法:response.setContentType(“text/html;charset=UTF-8”);
具體代碼:
/**
* 向頁面做出響應的Servlet
*/
/**
* 使用字符流輸出中文:
* * 有沒有亂碼?爲什麼?
* * 一定會亂碼.response使用的字符流有緩衝區的.
* * response的字符流的緩衝區的默認的編碼是ISO-8859-1.編碼根本不支持中文.
* * 解決:
* * 設置response的字符流的緩衝區的編碼.
* * 設置瀏覽器默認打開的時候採用的字符集編碼.
* @param response
* @throws IOException
*/
private void test4(HttpServletResponse response) throws IOException {
//設置瀏覽器默認打開的時候採用的字符編碼
//response.setHeader("Content-Type", "text/html;charset=UTF-8");
//設置response的字符流的緩衝的編碼
//response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("中文啊啊");
}
/**
* 使用字節流輸出中文:
* * 有沒有亂碼?爲什麼?
* * 不一定.
* * 解決:
* * 設置中文轉成字節數組取出的時候的編碼
* * 設置瀏覽器默認打開的時候編碼
*/
private void test3(HttpServletResponse response) throws UnsupportedEncodingException, IOException {
//設置瀏覽器默認打開的時候採用的字符集編碼
//response.setHeader("Content-Type", "text/html;charset=UTF-8");
response.setContentType("text/html;charset=UTF-8");
//設置中文轉成字節數組的時候取出的編碼
response.getOutputStream().write("中文".getBytes("UTF-8"));
}
/**
* 使用字符流響應數據
* @param response
* @throws IOException
*/
private void test2(HttpServletResponse response) throws IOException {
response.getWriter().println("Hello Writer Response....");
}
/**
* 使用字節流響應數據
* @param response
* @throws IOException
*/
private void test1(HttpServletResponse response) throws IOException {
response.getOutputStream().write("Hello OutputStream Response....".getBytes());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
響應中文的解決
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.