配置方法一
1、导入第三方的jackson包,jackson-mapper-asl-1.9.7.jar和jackson-core-asl-1.9.7.jar。
2、spring配置文件添加
<mvc:annotation-driven/>
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
</list>
</property>
</bean>
配置方案二(常用)
1、导入第三方的fastjson包,fastjson-1.1.34.jar
2、Spring配置文件添加:**
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
配置方案三
1、需要导入 jackson-annotations-*.jar,jackson-core-.jar,jackson-databind-.jar
2、在spring中添加配置**
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<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>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
Spring mvc和ajax中文乱码问题
1、返回的java对象
如果是java对象作为json对象返回的话,不需要设置过滤器,spring的配置文件也没有设置字符编码,中文正常返回。估计是json的支持包或spring有编码的设置。
2、返回字符串
例子请求的是这个方法
a).设置filter字符编码
spring的字符过滤器org.springframework.web.filter.CharacterEncodingFilter
无效,是乱码。显示如下
b).解决方法一、@ResponseBody
加上produces。如produces="application/json; charset=utf-8"。
设置后没有乱码
c).解决方法二、mvc:annotation-driven
这个方法是针对所有。
在mvc:annotation-driven加上下面的StringHttpMessageConverter
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<!--application/json和text/plain无法解决返回字符串的乱码 -->
<!-- <value>application/json;charset=UTF-8</value>
<value>text/plain;charset=UTF-8</value>
-->
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
主要是text/html;charset=UTF-8就可以,其他都不可以。避免乱码。
发现:再去掉注解中的参数produces="application/json; charset=utf-8",然后测试。supportedMediaTypes加入text/html;charset=UTF-8能解决乱码。且java对象的json返回也没有出现乱码问题。