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 }
  • 相关阅读:
    webpack-dev-server
    python 基础语言 学习笔记
    react 避免重复渲染
    获取cookie
    解决 canvas 在高清屏中绘制模糊的问题
    h5页面点击事件ios没反应 移动端兼容性问题
    rem 刷新闪烁问题
    谷歌禁止input自动填充表单信息
    react 循环产生定时器
    IOS开发-UI学习-UIWebView,简单浏览器的制作
  • 原文地址:https://www.cnblogs.com/z941030/p/4704401.html
Copyright © 2011-2022 走看看