springmvc当要返回中文字符串时出现乱码

当过滤器,页面编码都对,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。

原文地址:https://www.cnblogs.com/a1304908180/p/10094961.html