在Servlet中利用response向客戶端瀏覽器輸出中文時有時會遇到亂碼問題,總結如下:
response輸出流有兩種,一是以字節流輸出,一是以字符流輸出。
一、以字節流輸出:1.默認編碼輸出木有亂碼2.通過response的setHeader方法設置編碼utf-8,無亂碼3.通過response的setContentType方法設置編碼utf-8,無亂碼4.輸出數字建議以字符串形式輸出
二、以字符流輸出:1.默認查iso-8859-1碼表(SUN的Servlet規范要求的) ,客戶端顯示亂碼2.通過response的setHeader方法設置編碼utf-8,無亂碼3.通過response的setContentType方法設置編碼utf-8,無亂碼
字節流以默認編碼輸出:
1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 // 以字節流用默認編碼向客戶端輸出中文數據,木有亂碼 4 response.setContentType("text/html"); 5 6 String str = "喔呵呵呵呵"; 7 OutputStream out = response.getOutputStream(); 8 out.write("</br></br><div align=/"center/" style=/"font-size:25px; color:red/">".getBytes()); 9 10 out.write(str.getBytes());11 12 out.write("</div>".getBytes());13 out.close();14 }
字節流設置編碼為utf-8輸出:
1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 4 // 通知客戶端查UTF-8碼表 5 response.setContentType("text/html;charset=utf-8"); 6 7 // 或者: 8 // response.setHeader("Content-Type","text/html;charset=utf-8"); 9 10 String str = "喔哈哈哈哈";11 OutputStream out = response.getOutputStream();12 out.write("</br></br><div align=/"center/" style=/"font-size:25px; color:red/">".getBytes());13 14 out.write(str.getBytes("utf-8"));15 16 out.write("</div>".getBytes());17 out.close();18 }
字節流輸出數字:
1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 response.setHeader("Content-Type", "text/html;charset=utf-8"); 4 5 int i = 98; 6 OutputStream out = response.getOutputStream(); 7 8 out.write("</br></br><div align=/"center/" style=/"font-size:25px; color:red/">" 9 .getBytes());10 11 // out.write(i); 會輸出字母b12 13 // 輸出數字9814 out.write((i + "").getBytes());15 16 out.write("</div>".getBytes());17 out.close();18 }
字符流設置編碼為utf-8輸出:
1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 // 通知客戶端查UTF-8碼表 4 response.setContentType("text/html;charset=utf-8"); 5 // 或者: 6 // response.setHeader("Content-Type", "text/html;charset=utf-8"); 7 8 String str = "喔嘿嘿嘿嘿"; 9 PRintWriter out = response.getWriter();10 out.write("</br></br><div align=/"center/" style=/"font-size:25px; color:red/">");11 12 out.write(str);13 14 out.write("</div>");15 out.flush();16 out.close();17 }
新聞熱點
疑難解答