Java MVC 是一種常見的 web 應用架構,它將應用程序分解為三個主要部分:模型 (Model)、視圖 (View) 和控制器 (Controller)。控制器接收并處理來自用戶的請求,調用指定的模型進行數據處理,并將處理后的數據傳遞給視圖進行呈現。
在 Java MVC 中,我們經常需要返回 JSON 數據給前端。但是,有時候我們會發現返回的 JSON 數據出現了亂碼的情況。
例如以下代碼: // 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 數據。
如果直接訪問 "/getUser" 接口,會發現返回的 JSON 數據中的名字出現了亂碼:{"id":1,"name":"??","age":18}。
產生這個問題的原因是,Spring 默認情況下使用的是 ISO-8859-1 編碼格式,而不是 UTF-8 編碼格式(JSON 數據默認使用 UTF-8 編碼)。因此,需要在配置文件中添加以下配置:
# application.properties 文件中添加以下配置 spring.http.encoding.force=true spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true
添加完上述配置后,再次訪問 "/getUser" 接口,就會發現返回的 JSON 數據中的名字不再是亂碼了。