解决SSM框架jackson解析方式的中文响应的乱码问题
web.xml配置编码过滤器的情况下
controller层使用@ResponseBody返回中文字符串的响应的情况下,
即使web.xml中配置了编码过滤器,但是编码过滤器并不会起作用.
**原因**
当我们使用了@ResponseBody注解的时候,springmvc
会自动使用StringHttpMessageConverter解析字符串,默认采用
IS0-8859-1的编码方式解析,这个时候我们需要在springmvc的配置文件中
重新对StringHttpMessageConverter进行配置:
<!--开启mvc的注解驱动-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="defaultCharset" value="utf-8"/>
<property name="supportedMediaTypes">
<set>
<value>text/plain;charset=utf-8</value>
<value>text/html;charset=utf-8</value>
<value>application/json;charset=utf-8</value>
</set>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
没有配置编码过滤器的情况下
在WEB-INF下配置web.xml
<filter>
<filter-name>CharacterEncodingFilter</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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这里需要注意的是:
<param-name>encoding</param-name>
的值尽量是encoding
,因为其他的值可能无效,所以也会乱码!