SSM ajax 後端返回值中文亂碼
問題詳情:
紅框中原本應該是後端返回的中文提示信息,但是到前端就成亂碼了
在後端中,返回類型是String。
問題原因:
- 可能一:
在網上搜索後,有的解決方案是説在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在前端的返回值中文顯示就正常了
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。