关于Ajax传输字符串到后台呈中文乱码的解决方法

关于Ajax传输字符串到后台呈中文乱码的解决方法

框架:springboot+maven+Mybatis

使用软件:Intellij IDEA 2018.2.6

前端:jquery-1.11.3.min.js

 

问题:在使用Ajax传输一个字符串的时候,前台显示出中文字样,后台却是乱码+“=”,尝试了“produces = "text/html;charset=utf-8"”,无果:

 

<input type="text" id="uid"/>
<div id="message"></div>
</body>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
    $("#uid").blur(function () {
        var uid = $(this).val();
        // var uid = encodeURI($('#uid').val(),"utf-8");
        // data = {"goods_name":uid};
        $.ajax({
            url:"/async",
            data:uid,
            type:"POST",
            ContentType:"application/x-www-form-urlencoded;charset=UTF-8",
            success:function (data) {
                alert("返回结果集="+data)
            }
        })
    })
</script>

 

 

 

解决方法:

在controller层,使用URLDecoder.decode()对乱码进行解码,用substring除去最后的“=”

 

import java.io.IOException;
import java.net.URLDecoder;
    
public List<Map<String,Object>> async(@RequestBody String word) throws ExecutionException, InterruptedException, IOException {
        MultiValueMap<String, String> paramMap = new LinkedMultiValueMap<>();
        String goods_name = URLDecoder.decode(word, "UTF-8");
        paramMap.add("goods_name", goods_name.substring(0,goods_name.length()-1));

 

 这里转发两个网址,分别详细讲解了“使用 URLDecoder 和 URLEncoder 对中文字符进行编码和解码” 和 “substring常用的两种方法

https://blog.csdn.net/justloveyou_/article/details/57156039

https://blog.csdn.net/hehuihh/article/details/79033047

 

转载于:https://www.cnblogs.com/-hjd/p/10060372.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值