栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

前端中文数据请求到后端出现乱码问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

前端中文数据请求到后端出现乱码问题

2021-10-24 前端数据传到后端出现乱码问题

已经设置过响应时的编码

response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

但是依然出现乱码问题,解决方案如下:

将前端数据使用encodeURL进行编码,重点:需要进行两次encodeURL 编码

let username = encodeURI(encodeURI(document.getElementById("username").value));

后端解码(调用java.net.URLDecoder.decode()方法进行解码)

        String username = request.getParameter("username");
        String decode = "";
        try {
            decode = java.net.URLDecoder.decode(username, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        boolean flag = goodsService.checkUsername(decode);
        try {
            response.getWriter().println(flag);
        } catch (IOException e) {
            e.printStackTrace();
        }

完美解决!

前端在进行encode编码时,为什么用了两次encodeURI,而服务器后端在解码时只解了一次?

原因是:容器会默认帮你解一次码。(容器这里指服务器)

既然容器会默认解一次码,那么为什么不直接在前端只进行一次encode,服务端程序直接request.getParameter(“username”) ?

原因是:容器默认解码时采用的编码是容器的默认编码,可能是UTF-8,GBK,也可能是其他编码方式。这与你的应用的编码方式未必会一致。所以你直接获取的话可能会出现乱码。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号