天天看點

SSM ajax 後端傳回值中文亂碼SSM ajax 後端傳回值中文亂碼

SSM ajax 後端傳回值中文亂碼

問題詳情:

紅框中原本應該是後端傳回的中文提示資訊,但是到前端就成亂碼了

在後端中,傳回類型是String。

SSM ajax 後端傳回值中文亂碼SSM ajax 後端傳回值中文亂碼

問題原因:

  • 可能一:

    在網上搜尋後,有的解決方案是說在ajax 中少配置了

    contentType: "application/x-www-form-urlencoded; charset=utf-8",
               
    但試了之後發現,加不加沒影響
  • 可能二:

    使用@RequestMapping傳回中文亂碼

    原因分析:(網上基本都是一緻的答案)

    首先: 确定的是(經過多次測試的結果)隻有當傳回值是 String時才會出現中文亂碼,而當傳回值是Map<String, Object>或者是其它類型時,并沒有中文亂碼的出現.

    然後找原因: 原因是這可以說是spring mvc的一個bug,spring MVC有一系列HttpMessageConverter去處理用@ResponseBody注解的傳回值,如傳回list或其它則使用 MappingJacksonHttpMessageConverter,傳回string,則使用 StringHttpMessageConverter,而這個convert使用的是字元集是iso-8859-1,而且是final的。是以在當傳回json中有中文時會出現亂碼。

    這個是在網上找到的,

    網站是:https://www.cnblogs.com/zique/p/6171862.html

解決方案:

  • 試了下,情況比較符合第二種可能,是以我的解決方案是類型由String 改成JSONObject 類型,這樣ajax在前端的傳回值中文顯示就正常了
    SSM ajax 後端傳回值中文亂碼SSM ajax 後端傳回值中文亂碼