在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 }
新闻热点
疑难解答