zoukankan      html  css  js  c++  java
  • Java中Servlet输出中文乱码问题

    1.现象:字节流向浏览器输出中文,可能会乱码(IE低版本)

    private void byteMethod(HttpServletResponse response) throws IOException, UnsupportedEncodingException {
            String date = "你好";
            ServletOutputStream outputStream = response.getOutputStream();
            outputStream.write(date.getBytes();
        }

    原因:服务器端和浏览器端的编码格式不一致。

    解决方法:服务器端和浏览器端的编码格式保持一致

    private void byteMethod(HttpServletResponse response) throws IOException, UnsupportedEncodingException {
            String date = "你好";
            ServletOutputStream outputStream = response.getOutputStream();
            // 浏览器端的编码
            response.setHeader("Content-Type", "text/html;charset=utf-8");
            // 服务器端的编码
            outputStream.write(date.getBytes("utf-8"));
        }

    或者简写如下

    private void byteMethod(HttpServletResponse response) throws IOException, UnsupportedEncodingException {
            String date = "你好";
            ServletOutputStream outputStream = response.getOutputStream();
            // 浏览器端的编码
            response.setContentType("text/html;charset=utf-8");
            // 服务器端的编码
            outputStream.write(date.getBytes("utf-8"));
        }

    2.现象:字符流向浏览器输出中文出现   ???乱码

    private void charMethod(HttpServletResponse response) throws IOException {
    
            String date = "你好";
            PrintWriter writer = response.getWriter();
            writer.write(date);
        }

    原因:表示采用ISO-8859-1编码形式,该编码不支持中文

    解决办法:同样使浏览器和服务器编码保持一致

    private void charMethod(HttpServletResponse response) throws IOException {
    
            // 处理服务器编码
             response.setCharacterEncoding("utf-8");
            // 处理浏览器编码
             response.setHeader("Content-Type", "text/html;charset=utf-8");
    
            String date = "中国";
            PrintWriter writer = response.getWriter();
    
            writer.write(date);
        }

    注意!setCharacterEncoding()方法要在写入之前使用,否则无效!!!

    或者简写如下

    private void charMethod(HttpServletResponse response) throws IOException {
    
            response.setContentType("text/html;charset=GB18030");
    
            String date = "中国";
            PrintWriter writer = response.getWriter();
    
            writer.write(date);
        }    

    总结:解决中文乱码问题使用方法 response.setContentType("text/html;charset=utf-8");可解决字符和字节的问题。

    也可以看一下这位博主的文章,感觉思路很清晰。https://www.cnblogs.com/Survivalist/p/9015754.html

    如有问题还望指正!

  • 相关阅读:
    博客链接--竹子
    升级sudo至1.9.5p2,修复sudo漏洞
    使用Jenkins自动打包部署前端
    升级sudo至1.9.5p2,修复sudo漏洞
    60行C代码实现一个shell
    copy_{to, from}_user()的思考
    Code Server 是什么?
    Linux常用命令学习(5)
    Linux sudo权限提升漏洞(CVE-2021-3156)
    厚书读薄丨《Vim实用技巧》第一部分 模式
  • 原文地址:https://www.cnblogs.com/springa/p/12687167.html
Copyright © 2011-2022 走看看