今天在后台取出數據傳給前端時展示的時候,發現中文亂碼,在后台打斷點 debug 調試發現返回時顯示還是正常的,但是到前端發現亂碼,由此知道是在返回的過程中發生了亂碼問題。
在控制台輸出數據
checked: false
icon: ""
id: 2
name: "????"
nocheck: false
open: true
pId: 1
pagetype: 0
項目環境是 SSM,模板引擎使用的是 freemarker,在 Spring MVC 中配置的編碼為 UTF-8,后來查找資料發現了問題所在,因為在 controller 中返回 json 用了 @ResponseBody,而 Spring 源碼中 @ResponseBody 的實現類發現其默認的編碼是 iso-8859-1,而項目用的編碼為 UTF-8,所以傳中文會出現亂碼。
// 解決前
@ResponseBody
@RequestMapping(value = "/tabledata", method = {RequestMethod.GET})
// 解決后
@ResponseBody
@RequestMapping(value = "/tabledata", method = {RequestMethod.GET})
參考:
https://www.cnblogs.com/deolin/p/7866398.html