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

    如有问题还望指正!

  • 相关阅读:
    利用ApplicationListener和ContextRefreshedEvent加载自己的beanPool
    java对象转变为map
    Java通过poi创建Excel文件并分页追加数据
    Java通过poi读取excel中文件
    SpringMvc通过controller上传文件代码示例
    SpringCloud组件学习-图
    Java-线程间通信小结
    Java-关于Thread
    Java-对象及变量的并发访问小结
    java爬取免费HTTP代理 code-for-fun
  • 原文地址:https://www.cnblogs.com/springa/p/12687167.html
Copyright © 2011-2022 走看看