springmvc當要返回中文字串時出現亂碼

x號開發者發表於2018-12-10

當過濾器,頁面編碼都對,tomcat版本在8以上(8內部預設用utf-8)

在方法引數中加上,produces="text/html;charset=UTF-8"

絕對可以解決!!!!

 

這篇寫的比我詳細

方法一: 

在@RequestMapping(value="/ValidMobile",produces = "text/html;charset=UTF-8")中,加上produces = "text/html;charset=UTF-8"。

@RequestMapping(value="/ValidMobile",produces = "text/html;charset=UTF-8")
@ResponseBody
public String validMobile(@RequestBody String param) {
User user = new Gson().fromJson(param, User.class);
ResponseBean rb = new ResponseBean;
rb.setResultMsg("中文亂碼");
return new Gson().toJson(rb);
}
 

 

方法二(推薦):

在spring-servlet.xml配置檔案中加入

<!-- 註解驅動 -->
<mvc:annotation-driven>
<!-- 指定http返回編碼格式 -->
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
<value>*/*;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
---------------------
作者:kuaile966
來源:CSDN
原文:https://blog.csdn.net/kuaile966/article/details/82872169
版權宣告:本文為博主原創文章,轉載請附上博文連結!

 

這個是產生亂碼原因

在使用SpringMVC的時候,最開始的時候在配置檔案中使用<mvc:annotation-driven />去自動註冊DefaultAnnotationHandlerMapping與AnnotationMethodHandlerAdapter 兩個bean,這是spring MVC為@Controllers分發請求所必須的。再後來,Ajax請求需要返回字串,遂在控制器上使用@ResponseBody註解來實現,這時候遇到的一個問題是,返回中文字元的時候會亂碼,關於中文亂碼的解決辦法倒時有很多。SpringMVC的@ResponseBody註解使用的處理類為Spring的org.springframework.http.converter.StringHttpMessageConverter類,返回中文亂碼的原因是其預設處理的字符集是ISO-8859-1。

 

相關文章