`
wangchao_17915566
  • 浏览: 167214 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

@ResponseBody 乱码

阅读更多

spring3使用@ResponseBody 输出乱码,加入此配置

<bean  class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
	<property name="messageConverters">
	     <list>
  			 <bean class = "org.springframework.http.converter.StringHttpMessageConverter">
   				<property name = "supportedMediaTypes">
   					 <list>
    					 <value>text/plain;charset=UTF-8</value>
    				 </list>
   				</property>
  			 </bean>
 		 </list>
	</property>
</bean>
 
分享到:
评论
18 楼 mx9944 2014-05-28  
fancyboy2050 写道
lc200297 写道
我经过测试,发现用了<mvc:annotation-driven />这个后,就算用了spring字符过滤器,也会有乱码,于是我去掉了<mvc:annotation-driven />配置改用楼主的配置方法,确实能解决乱码问题
但发现,若web.xml里配置了org.springframework.web.context.ContextLoaderListener那么通过DispatcherServlet的路径映射,全都无法访问,但若是在xxx-servlet.xml采用这段<mvc:annotation-driven />配置,又正常访问,就是又有乱码问题
纠结呀


问题已经解决,项目都在线上跑了。
把楼主的配置写在<mvc:annotation-driven />之前就没问题了。



的确 有顺序  已解决
17 楼 aixinnature 2013-06-07  
ycfdonews 写道
如果是用下面的配置(spring3.1)
<mvc:annotation-driven>
		<mvc:message-converters>
			<bean class="org.springframework.http.converter.StringHttpMessageConverter" />
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

在controller中return new String(result.toString().getBytes(), "ISO-8859-1");
解决乱码问题


正解
16 楼 huang_yong 2013-03-13  
个人认为,没必要使用Spring提供的@ResponseBody功能。

<mvc:annotation-driven/>注解竟然没有配置字符编码的属性,这一点让人很失望。
只能退而求其次,配置AnnotationMethodHandlerAdapter,还要搞一个类去扩展StringHttpMessageConverter。

感觉不太优雅...

我的作法是这样的:
将数据转换为JSON字符串,并写入到Response中,此时可进行UTF-8编码。
以上操作可以封装在一个工具类中实现。在实际工作中一直都是这样使用。
15 楼 coldrush 2013-03-08  
    <!--encode filter-->
    <filter>
        <filter-name>Set Character Encoding</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>Set Character Encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
14 楼 PTZhuf 2013-01-02  
yfx831238 写道
fancyboy2050 写道
lc200297 写道
我经过测试,发现用了<mvc:annotation-driven />这个后,就算用了spring字符过滤器,也会有乱码,于是我去掉了<mvc:annotation-driven />配置改用楼主的配置方法,确实能解决乱码问题
但发现,若web.xml里配置了org.springframework.web.context.ContextLoaderListener那么通过DispatcherServlet的路径映射,全都无法访问,但若是在xxx-servlet.xml采用这段<mvc:annotation-driven />配置,又正常访问,就是又有乱码问题
纠结呀


问题已经解决,项目都在线上跑了。
把楼主的配置写在<mvc:annotation-driven />之前就没问题了。


我试了下,中文是解决了,但是我的spring@mvc中的BindingResult result却不能自动注入了。还有就是返回的返回头Content-Type是一堆的。真是无解呀



这个可以写在  mvc:annotation-driver 的内部。。。。
	<annotation-driven>
		<!-- 解决ResponeseBody的json中文乱码 (因为StringHttpMessageConverter默认字符集是ISO8859-1所以。。。)-->
		<message-converters>
			<beans:bean
				class="org.springframework.http.converter.StringHttpMessageConverter">
				<beans:property name="supportedMediaTypes">
					<beans:list>
						<beans:value>
							text/plain;charset=UTF-8
						</beans:value>
					</beans:list>
				</beans:property>
			</beans:bean>
		</message-converters>
		<argument-resolvers>
			<!-- 处理pageable的实例化,避免出现无法实例化接口的问题,并使得能够使用PageableDefault注解提供默认初始值 -->
			<beans:bean class="org.springframework.data.web.PageableArgumentResolver"></beans:bean>
		</argument-resolvers>
	</annotation-driven>
13 楼 yizhl 2012-10-24  
没用 依旧乱码
12 楼 ycfdonews 2012-10-04  
如果是用下面的配置(spring3.1)
<mvc:annotation-driven>
		<mvc:message-converters>
			<bean class="org.springframework.http.converter.StringHttpMessageConverter" />
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

在controller中return new String(result.toString().getBytes(), "ISO-8859-1");
解决乱码问题
11 楼 yjmyd1119 2012-03-23  
lc200297 写道
我经过测试,发现用了<mvc:annotation-driven />这个后,就算用了spring字符过滤器,也会有乱码,于是我去掉了<mvc:annotation-driven />配置改用楼主的配置方法,确实能解决乱码问题
但发现,若web.xml里配置了org.springframework.web.context.ContextLoaderListener那么通过DispatcherServlet的路径映射,全都无法访问,但若是在xxx-servlet.xml采用这段<mvc:annotation-driven />配置,又正常访问,就是又有乱码问题
纠结呀

解决了吗?我遇到的问题跟你一样啊。
10 楼 yjmyd1119 2012-03-23  
yfx831238 写道
fancyboy2050 写道
lc200297 写道
我经过测试,发现用了<mvc:annotation-driven />这个后,就算用了spring字符过滤器,也会有乱码,于是我去掉了<mvc:annotation-driven />配置改用楼主的配置方法,确实能解决乱码问题
但发现,若web.xml里配置了org.springframework.web.context.ContextLoaderListener那么通过DispatcherServlet的路径映射,全都无法访问,但若是在xxx-servlet.xml采用这段<mvc:annotation-driven />配置,又正常访问,就是又有乱码问题
纠结呀


问题已经解决,项目都在线上跑了。
把楼主的配置写在<mvc:annotation-driven />之前就没问题了。


我试了下,中文是解决了,但是我的spring@mvc中的BindingResult result却不能自动注入了。还有就是返回的返回头Content-Type是一堆的。真是无解呀

确实解决问题了
9 楼 yingzhor 2011-11-16  
对我有用,谢谢了。 用@ResponseBody做Ajax的响应还是相当爽的。
8 楼 jychenok 2011-05-02  
对我有用,谢谢
7 楼 yfx831238 2011-01-12  
fancyboy2050 写道
lc200297 写道
我经过测试,发现用了<mvc:annotation-driven />这个后,就算用了spring字符过滤器,也会有乱码,于是我去掉了<mvc:annotation-driven />配置改用楼主的配置方法,确实能解决乱码问题
但发现,若web.xml里配置了org.springframework.web.context.ContextLoaderListener那么通过DispatcherServlet的路径映射,全都无法访问,但若是在xxx-servlet.xml采用这段<mvc:annotation-driven />配置,又正常访问,就是又有乱码问题
纠结呀


问题已经解决,项目都在线上跑了。
把楼主的配置写在<mvc:annotation-driven />之前就没问题了。


我试了下,中文是解决了,但是我的spring@mvc中的BindingResult result却不能自动注入了。还有就是返回的返回头Content-Type是一堆的。真是无解呀
6 楼 feitianzi 2010-12-23  
照楼主的做法没有解决乱码的问题啊,依旧是???
按照跟贴朋友的配置内容也配置了,还是不起作用。
5 楼 fancyboy2050 2010-06-24  
lc200297 写道
我经过测试,发现用了<mvc:annotation-driven />这个后,就算用了spring字符过滤器,也会有乱码,于是我去掉了<mvc:annotation-driven />配置改用楼主的配置方法,确实能解决乱码问题
但发现,若web.xml里配置了org.springframework.web.context.ContextLoaderListener那么通过DispatcherServlet的路径映射,全都无法访问,但若是在xxx-servlet.xml采用这段<mvc:annotation-driven />配置,又正常访问,就是又有乱码问题
纠结呀


问题已经解决,项目都在线上跑了。
把楼主的配置写在<mvc:annotation-driven />之前就没问题了。
4 楼 lc200297 2010-06-19  
lc200297 写道
我经过测试,发现用了<mvc:annotation-driven />这个后,就算用了spring字符过滤器,也会有乱码,于是我去掉了<mvc:annotation-driven />配置改用楼主的配置方法,确实能解决乱码问题
但发现,若web.xml里配置了org.springframework.web.context.ContextLoaderListener那么通过DispatcherServlet的路径映射,全都无法访问,但若是在xxx-servlet.xml采用这段<mvc:annotation-driven />配置,又正常访问,就是又有乱码问题
纠结呀

刚解决了
少加了<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
去掉<mvc:annotation-driven />这个配置,用以下方式
<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<bean
					class="org.springframework.http.converter.StringHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							<value>text/html;charset=UTF-8</value>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> 
3 楼 lc200297 2010-06-19  
我经过测试,发现用了<mvc:annotation-driven />这个后,就算用了spring字符过滤器,也会有乱码,于是我去掉了<mvc:annotation-driven />配置改用楼主的配置方法,确实能解决乱码问题
但发现,若web.xml里配置了org.springframework.web.context.ContextLoaderListener那么通过DispatcherServlet的路径映射,全都无法访问,但若是在xxx-servlet.xml采用这段<mvc:annotation-driven />配置,又正常访问,就是又有乱码问题
纠结呀
2 楼 wangchao_17915566 2010-06-01  
fancyboy2050 写道
你好!我用了<mvc:annotation-driven />这个,@ResponseBody时也出现乱码,然后加上你写的这段配置,乱码也没有解决,不知道是这两个有冲突还是别的原因哦?



除了这个,你在web.xml 配置 spring字符过滤器了吗?如果没有,也应该配上。
1 楼 fancyboy2050 2010-05-27  
你好!我用了<mvc:annotation-driven />这个,@ResponseBody时也出现乱码,然后加上你写的这段配置,乱码也没有解决,不知道是这两个有冲突还是别的原因哦?

相关推荐

Global site tag (gtag.js) - Google Analytics