关于responseBody注解中文乱码的问题解决

在web.xml中定义字符集过滤器:

<filter>
        <filter-name>SpringEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>SpringEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

如果这样仍然不起作用,则需要在spring-mvc.xml中配置如下bean:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" >
    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/plain;charset=utf-8</value>
                        <value>text/html;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </list>
    </property>
</bean> 

值得一提的是,@ResponseBody注解是通过在spring-mvc.xml中配置的 <mvc:annotation-driven></mvc:annotation-driven>来启用的,所以上述bean必须写在 <mvc:annotation-driven></mvc:annotation-driven>的前边,否则是不起作用的。

时间: 2024-10-31 06:43:51

关于responseBody注解中文乱码的问题解决的相关文章

解决SpringMVC的@ResponseBody返回中文乱码

SpringMVC的@ResponseBody返回中文乱码的原因是SpringMVC默认处理的字符集是ISO-8859-1,在Spring的org.springframework.http.converter.StringHttpMessageConverter类中可以看到如下代码: public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1"); 解决返回中文乱码的问题有两种,第一种是局部的,只针

Spring MVC @ResponseBody响应中文乱码

问题:在前端通过get请求服务端返回String类型的服务时,会出现中文乱码问题 原因:由于spring默认对String类型的返回的编码采用的是 StringHttpMessageConverter>>> spring mvc的一个bug,spring MVC有一系列HttpMessageConverter去处理用@ResponseBody注解的返回值,如返回list则使用MappingJacksonHttpMessageConverter,返回string,则使用StringHttp

解决springMVC4下使用@ResponseBody的中文乱码问题

由于现在的项目一般都追求前后端分离,依靠Ajax进行通信,这样有助于团队分工.项目维护和后期的平台移植,这就使得后端框架对视图层的功能要求越来越低~ 今天要说的是基于SpringMVC开发web后端时,为了简单而直接在控制器方法中返回json字符串时碰到的中文乱码问题.算是非常基础的问题,大牛请绕道~ 其实我自己一开始也没觉得能有多复杂,认为一搜索就能找到一大把解决方案,所以没有计划耗费多久时间,更没打算转成写一篇博文记录过程.可不曾想到,足足花了我2个半小时,今天看来又要加班了!其实确实在GG

@ResponseBody 返回中文乱码问题解决 spingmvc

<!-- UTF8解决乱码问题 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.conv

Spring @ResponseBody 返回中文乱码问题

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt102 今天在使用spring 的时候,发现中文返回的是乱码. 经过研究发现,主要是@ResponseBody 引起的.主要是由于 @ResponseBody 返回字符串结果的时候,使用了org.springframework.http.converter.StringHttpMessageConverter 中默认的编码. 请看 org.springframework.ht

SpringMVC4.0.3 @ResponseBody JSON 中文乱码问题

百度能搜到N多答案,但很真能解决问题的没多少. 这代码虽然不是我原创的.但我还是想把该文章选成原创,就是想让更多的有遇到相同问题的人,快点拜托这乱码问题. 代码很简单 @RequestMapping(value="listUserJson.html",produces="text/html;charset=UTF-8") @ResponseBody public String listUserJson(int page,int rows){ TreeMap<S

网页中文乱码的问题解决方法

1.解决HTML页面中的中文问题: 为了使HTML页面很好地支持中文,就必须在每个HTML页面的头部增加如下代码: <HEAD> ... <META http-equiv=Content-Type content="text/html;charset=gb2312"> ... <HEAD> 2.解决JSP页面中的中文问题 为了使JSP页面很好地支持中文,就必须在每个JSP页面的头部增加如下代码: <%@ page contentType=&qu

@ResponseBody返回中文乱码

1.在方法上修改编码 这种方式,需要对每个方法都进行配置. 2.修改springmvc的配置文件 同时注意,把这个配置写在扫描包的上面. 原文地址:https://www.cnblogs.com/SmallStrange/p/9574284.html

Spring MVC中@ResponseBody 返回中文字符串乱码问题

在MVC配置文件中配置 <mvc:annotation-driven> <!-- 解决@ResponseBody返回中文乱码 --> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name