當過濾器,頁面編碼都對,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。