springmvc返回中文乱码问题

关于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

相关文章
相关标签/搜索