關於springmvc的返回中文亂碼的問題,網上可謂是清一色的同樣,無外乎就兩種,要麼在局部類或這方法上解決,相似以下的代碼:html
1 @GetMapping(value="/error/query",produces="text/json;charset=utf-8") 2 public String getMessage(){ 3 return "增長對字符編碼限制"; 4 }
另外一種方式是在springmvc.xml中配置對應的全局參數,相似下面列舉的部分:spring
1 <mvc:message-converters> 2 <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 3 <property name="supportedMediaTypes"> 4 <list> 5 <value>text/plain;charset=utf-8</value> 6 <value>text/html;charset=UTF-8</value> 7 </list> 8 </property> 9 </bean> 10 </mvc:message-converters>
固然上面列舉的這個是針對返回值爲string類型,對於返回json類型的處理方式是同樣的,只不過spring4.3對於json處理默認的編碼方式使用的是UTF-8,這個咱們能夠經過springmvc對json處理類MappingJackson2HttpMessageConverter以及父類AbstractJackson2HttpMessageConverter中能夠看到,具體源代碼的json
1 public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); 2 3 protected void init(ObjectMapper objectMapper) { 4 this.objectMapper = objectMapper; 5 setDefaultCharset(DEFAULT_CHARSET); 6 DefaultPrettyPrinter prettyPrinter = new DefaultPrettyPrinter(); 7 prettyPrinter.indentObjectsWith(new DefaultIndenter(" ", "\ndata:")); 8 this.ssePrettyPrinter = prettyPrinter; 9 }
代碼是我截取了部分的源碼,因此說若是你使用的spring4.3及後續版本,且返回值爲json,若是全局配置,只須要在xml中配置<mvc:annotation-driven /> 便可,中文不會亂碼;若是返回值是String類型,若是全局配置,則須要如小編上面的配置便可。mvc
對於局部的處理,則仍是使用produces的charset=UTF-8來實現。app
固然也有不少小夥伴用的是spring4.3以前的版本,因爲以前版本對於json的處理使用的是MappingJacksonHttpMessageConverter小編沒下載源碼,因此沒有去研究,可是對於返回值爲String類型的處理方式沒有變。this