springmvc返回中文亂碼問題


關於springmvc的返回中文亂碼的問題,網上可謂是清一色的一樣,無外乎就兩種,要么在局部類或這方法上解決,類似如下的代碼:

1 @GetMapping(value="/error/query",produces="text/json;charset=utf-8")
2     public String getMessage(){
3         return "增加對字符編碼限制";
4     }

另一種方式是在springmvc.xml中配置對應的全局參數,類似下面列舉的部分:

 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中可以看到,具體源代碼的

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類型,如果全局配置,則需要如小編上面的配置即可。

對於局部的處理,則還是使用produces的charset=UTF-8來實現。

     當然也有很多小伙伴用的是spring4.3之前的版本,由於之前版本對於json的處理使用的是MappingJacksonHttpMessageConverter小編沒下載源碼,所以沒有去研究,但是對於返回值為String類型的處理方式沒有變。

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM