zoukankan      html  css  js  c++  java
  • Servlet响应的中文字符集问题

    在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); 会输出字母b
    12 
    13         // 输出数字98
    14         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 }
  • 相关阅读:
    计算机组成原理实验总结
    Matlab图像匹配问题
    局域网实验
    信号量与共享存储区(操作系统实验三)
    路由器配置及IP设置及ping命令使用
    自我介绍是一门学问
    数据库管理系统的维护与管理
    高数讲课教后感
    node Unexpected token import(node 目前默认不支持es6 的模块 import解决方法有2)
    Cookie/Session机制详解
  • 原文地址:https://www.cnblogs.com/z941030/p/4704401.html
Copyright © 2011-2022 走看看