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

    如有问题还望指正!

  • 相关阅读:
    Unity shader with lightmap
    清理数据库日志
    Sqlserver数据库还原一直显示“正在还原…”解决方法
    如何查看 SQL Server 执行的历史 SQL 语句记录?
    MYSQL 命令行大全 (简洁、明了、全面)
    C#Datatable导入sqlserver数据库中,三种常见,快捷的方法
    MongoDB下载页面
    等级保护和分级保护区别与联系
    等级保护和分级保护
    SQL2005EXPress自动备份
  • 原文地址:https://www.cnblogs.com/springa/p/12687167.html
Copyright © 2011-2022 走看看