zoukankan      html  css  js  c++  java
  • day19(乱码解决方案)

    乱码的解决方案:

        首先需要理解乱码的产生原因:无非就是编码格式的问题

        1.服务器到浏览器  

           字节流传输时

            产生乱码的原因:

                 1.浏览器打开方式不对(打开时 的方式为默认的方式,各个浏览器的方式都不同)

                 2.中文转字节数组

              解决方案:

    ServletOutputStream outputStream = response.getOutputStream();
    response.setHeader("Content-Type", "text/html;charset=utf-8");//设置响应头部
    outputStream.write("成功".getBytes());
    outputStream.close();    
    

           字符流传输时

               产生乱码的原因:

                 字符流传输时是存在缓存区的,response获得字符流,

                 缓冲区中的默认编码格式为ISO-8859-1码,这个字符不支持中文;

               解决方案1

    response.setHeader("Content-Type", "text/html;charset=utf-8");
    response.setCharacterEncoding("utf-8");
    response.getWriter().print("中文1");                
    

                  解决方案2

    response.setContentType("text/html;charset=utf-8");
    response.getWriter().print("中文1");
    

    2.浏览器到服务器乱码

          乱码产生分为两类doGet和doPost

            doGet乱码原因

                  浏览器-------url-------服务器

                    在请求时:数据在url中对数据进行了一次编码(ISO-8859-1);

                    浏览器----(ISO-8859-1编码)----url-------服务器

                      在传递的过程中都是使用字节传输的。

              解决方案:

                  在服务器解决乱码:获取传递参数是先使用ISO-8859-1解码称为字节

                           再使用UTF-8进行重新编码

                    new String(request.getParameter(String name).getByte("ISO-8859-1"),"UTF-8");

            doPost乱码原因

                  浏览器-----缓冲区(ISO-8859-1)-----服务器

                    只需要修改缓冲区编码格式就可以了

                    request.setCharacterEncoding("UTF-8");

        3.编码格式转换  

          url进行编码 

    java.net.URLDecoder.decode(String s,String enc);
    将application/x-www-form-urlencoded字符串转换成普通字符串。
    
    java.net.URLEncoder.decode(String s,String enc);
    将普通字符串转换成application/x-www-form-urlencoded字符串。

        

                               

                    

                      

                    

  • 相关阅读:
    时间戳(1532249295.179) 转日期格式(2018/07/22 16:48:15 179)
    iscroll.js右侧可滑动的菜单,点击每个菜单都会出现本菜单的详情
    canvas绘制的文字如何换行
    移动端H5页面禁止长按复制和去掉点击时高亮
    一列宽度不缩放,一列宽度弹性缩放,且超出后显示省略号
    js钩子机制(hook)
    mCustomScrollbar.js 漂亮的滚动条插件 适应内容自动更新
    axios.js 实例 -----$.ajax的替代方案
    用 async/await 来处理异步实例
    C#入门经典第18章-WEB编程
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/charset.html
Copyright © 2011-2022 走看看