spring mvc 返回json 乱码解决

SpringMVC的@ResponseBody注解可以将请求方法返回的对象直接转换成JSON对象,但是当返回值是String的时候,中文会乱码

原因是因为其中字符串转换和对象转换用的是两个转换器,而String的转换器中固定了转换编码为"ISO-8859-1"

解决办法:

1.返回字符串时,将字符串结果转换

return new String("你好".getBytes(), "ISO-8859-1");  

 2.添加@RequestMapping注解,配置produces的值

@RequestMapping(value = "/get", produces = {"application/json;charset=UTF-8"})  

 或者

@RequestMapping(value = "/get", produces = {"text/javascript;charset=UTF-8"})  
或者
@RequestMapping(value="/test",produces="text/plain;charset=UTF-8"

 3.也可以 修改默认的字符串的转换器StringHttpMessageConverter

 4.也可以配置 spring mvc的转化(跟spring 版本有关系 ,有的版本不好使)

 <mvc:annotation-driven>  
        <mvc:message-converters>  
            <bean class="org.springframework.http.converter.StringHttpMessageConverter" >  
	            <property name = "supportedMediaTypes">
					<list>
	 					 <value>text/plain;charset=UTF-8</value>
	 				</list>
				</property>
            </bean>  
            <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
			    <property name="supportedMediaTypes">  
			        <list>  
			            <value>applicaton/json;charset=UTF-8</value>  
			        </list>  
			    </property>  
			</bean>  
        </mvc:message-converters>  
    </mvc:annotation-driven>  

   

猜你喜欢

转载自feiteyizu.iteye.com/blog/2249295