最近在開發(fā)一個Web項目時遇到了一個問題,就是在使用controller返回JSON數(shù)據(jù)時,出現(xiàn)了亂碼的情況。
在查找問題的過程中,我發(fā)現(xiàn)出現(xiàn)亂碼的原因是因為在返回JSON數(shù)據(jù)時,controller默認使用ISO-8859-1編碼,而JSON數(shù)據(jù)是使用UTF-8編碼的,所以就出現(xiàn)了亂碼的情況。
解決這個問題的方法也比較簡單,只需要在controller中添加一行代碼即可:
@RequestMapping(value = "/getData", produces = "application/json;charset=UTF-8") @ResponseBody public String getData() { //這里是獲取數(shù)據(jù)的代碼 return json; }
在這段代碼中,我們在@RequestMapping注解中添加了produces屬性,指定了返回的JSON數(shù)據(jù)為“application/json;charset=UTF-8”的格式,這樣就可以避免亂碼問題了。
另外,如果在項目中使用了WebMvcConfigurerAdapter配置類,也可以在配置類中添加以下代碼:
@Configuration public class MvcConfig extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(List<HttpMessageConverter<?>>converters) { StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8")); converters.add(converter); } }
在這段代碼中,我們重新配置了消息轉(zhuǎn)換器,將使用UTF-8編碼。
總之,在使用controller返回JSON數(shù)據(jù)時出現(xiàn)亂碼問題,只需要指定返回的JSON數(shù)據(jù)格式為UTF-8即可。