Java MVC 是一種常見的 web 應(yīng)用架構(gòu),它將應(yīng)用程序分解為三個主要部分:模型 (Model)、視圖 (View) 和控制器 (Controller)??刂破鹘邮詹⑻幚韥碜杂脩舻恼埱螅{(diào)用指定的模型進行數(shù)據(jù)處理,并將處理后的數(shù)據(jù)傳遞給視圖進行呈現(xiàn)。
在 Java MVC 中,我們經(jīng)常需要返回 JSON 數(shù)據(jù)給前端。但是,有時候我們會發(fā)現(xiàn)返回的 JSON 數(shù)據(jù)出現(xiàn)了亂碼的情況。
例如以下代碼: // User 類 public class User { private Long id; private String name; private Integer age; // 省略 getter 和 setter } // UserController 類中的一個方法 @RequestMapping(value = "/getUser", method = RequestMethod.GET) @ResponseBody public User getUser() { User user = new User(); user.setId(1L); user.setName("張三"); user.setAge(18); return user; }
在這個例子中,我們定義了一個 User 類,并在 UserController 類中定義了一個返回 User 對象的 getUser 方法。在方法上使用 @ResponseBody 注解,表示返回的是 JSON 數(shù)據(jù)。
如果直接訪問 "/getUser" 接口,會發(fā)現(xiàn)返回的 JSON 數(shù)據(jù)中的名字出現(xiàn)了亂碼:{"id":1,"name":"??","age":18}。
產(chǎn)生這個問題的原因是,Spring 默認情況下使用的是 ISO-8859-1 編碼格式,而不是 UTF-8 編碼格式(JSON 數(shù)據(jù)默認使用 UTF-8 編碼)。因此,需要在配置文件中添加以下配置:
# application.properties 文件中添加以下配置 spring.http.encoding.force=true spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true
添加完上述配置后,再次訪問 "/getUser" 接口,就會發(fā)現(xiàn)返回的 JSON 數(shù)據(jù)中的名字不再是亂碼了。