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中有中文時會出現亂碼。
這個是在網上找到的,
網站是:https://www.cnblogs.com/zique/p/6171862.html
解決方案:
- 試了下,情況比較符合第二種可能,是以我的解決方案是類型由String 改成JSONObject 類型,這樣ajax在前端的傳回值中文顯示就正常了