關於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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM