• springMvc27-get乱码解决


     

    jsp页面中    通知浏览器以utf-8解码

    get请求编码方式和post请求提交编码方式不同,get是把数据直接放到url中,例如以上的uname,IE浏览器先对中文进行utf-8编码(一个中文3个字符表示 太长),继而为了缩短字符又用ISO8859-1编码后传递给服务器。服务器的doGet方法中要先进行ISO8859-1解码再utf-8解码才能看到中文。

    而post请求则在浏览器端把数据以utf-8的形式存储到http的请求体中,不用通过url传输,继而只要    request.setCharacterEncoding("utf-8");通知request以utf-8形式解码就行,因为request默认以ISO8859-1进行解码的。

    使用代码解决乱码问题

         1     public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
         2         // 处理响应数据的格式和编码,通知浏览器数据的显示方式
         3         response.setCharacterEncoding("utf-8");
         4         response.setContentType("text/html;charset=utf-8");
         5         // 获取字符输出流对象
         6         PrintWriter out = response.getWriter();
         7         // 获取请求参数
         8         String name = request.getParameter("uname");
         9         String address = request.getParameter("address");
        10         // 获取ISO8859-1的原始数据
        11         byte [] bs = name.getBytes("ISO8859-1"); //内部编码字节流,其实中文字符经过utf-8编码后的字节 都是英文可以表示的,只是       //ISO8859-1显示数据以一个字节一个字节显示,而utf-8以几个字节一起表示
        12         name = new String(bs,"UTF-8");
        13         bs = address.getBytes("ISO8859-1");
        14         address = new String(bs,"UTF-8");
        15         // 输出数据
        16         out.println("name="+name);
        17         out.println("
    ");
        18         out.println("address="+address);
        19     }

    如果使用以上的代码解决GET乱码每一个请求参数都需要重新的解码太繁琐,因此可以直接使用服务器通知浏览器以指定的方式进行编码字符数据。

    使用URIEnoding方式解决GET乱码问题

        1     2                connectionTimeout="20000"
        3                redirectPort="8443"
        4                URIEncoding="utf-8"/>

    URIEncoding主要指定的是%E5%8D%A1%E5%8D%A1的数据的解码方式,如果没有指定那么默认是ISO8859-1,如果指定那么采用指定的码表进行解码。因此服务器端就没有必要使用两个中编码方式进行转码了。

    注意:在实际的生产环境中我们代码的乱码问题不可能以来服务器帮助我们解决,因此推荐使用第一个转码方式。后期可以直接实现一个乱码的过滤器实现处理乱码的问题。
     

  • 相关阅读:
    SiliconCloud上新:GLM-4-9B,通用能力超越Llama 3
    tcpdump命令使用详解
    docker之Harbor私有仓库
    PLC可以连接哪些工业设备实现远距离无线通讯?工业网关可以吗?
    开放集识别(基于生成模型)
    亚马逊卖家售后管理做得好,差评投诉不见了!一文分享售后管理技巧
    web前端学习笔记三
    一文读懂微前端
    门面模式简介
    【VIO】第1讲 IMU 传感器
  • 原文地址:https://blog.csdn.net/qq_41632427/article/details/126370283