SSM ajax 後端返回值中文亂碼

問題詳情:

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

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

sseJava返回亂碼_中文亂碼


問題原因:

  • 可能一:
    在網上搜索後,有的解決方案是説在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中有中文時會出現亂碼。
    這個是在網上找到的,
    網站是:

解決方案:

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