`
wangchao_17915566
  • 浏览: 169847 次
  • 性别: 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时也出现乱码,然后加上你写的这段配置,乱码也没有解决,不知道是这两个有冲突还是别的原因哦?

相关推荐

    springMVC3使用@ResponseBody向浏览器返回 json,注意区分jar包前缀

    --处理 @ResponseBody 中文乱码问题 --&gt; &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&gt; &lt;property name="messageConverters"&gt; &lt;list&gt; &lt;!-- Support...

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

    本文将详细介绍如何解决SpringMVC中`@ResponseBody`注解返回中文乱码的问题。 首先,我们可以尝试使用`@RequestMapping`注解的`produces`属性来指定响应内容的MIME类型和字符集。例如: ```java @RequestMapping...

    spring+mybatis 通过@ResponseBody返回结果中文乱码的解决方法

    spring+mybatis 通过@ResponseBody返回结果中文乱码的解决方法 在使用 Spring+Mybatis 框架时,经常会遇到一个问题,就是通过 @ResponseBody 返回结果时,中文字符会出现乱码的问题。这是因为在 Spring MVC 中,...

    bundery#docs#问题3

    问题POST提交乱码@ResponseBody 返回乱码解决://添加 produces = "application/json;

    jackon 2.9.1

    在序列化或反序列化过程中,确保指定正确的字符集(例如UTF-8)以避免乱码问题。特别是在处理包含非ASCII字符的数据时,正确设置字符集至关重要。 总结来说,Jackson 2.9.1是一个用于处理JSON的Java库,常与Spring ...

    用ajax传递json到前台中文出现问号乱码问题的解决办法

    后来发现,因为在controller中返回json用了@ResponseBody,而spring源码中@ResponseBody 的实现类发现其默认的编码是 iso-8859-1,而项目用的编码为utf-8,所以传中文会出现乱码。 这里我使用了注解来解决: @...

    SpringMVC解决乱码

    然而,在使用SpringMVC时,可能会遇到乱码问题,例如在使用@ResponseBody注解时返回的数据出现乱码。在本文中,我们将讨论解决SpringMVC乱码问题的两种方法。 方法一:配置AnnotationMethodHandlerAdapter 在...

    Spring MVC中默认的ResponseBody为String的乱码问题.pdf

    在Spring MVC框架中,开发者经常遇到ResponseBody返回的字符串出现乱码的问题,特别是当字符串中包含中文字符时。这是因为Spring MVC默认使用了StringHttpMessageConverter来处理Response Body中的字符串,而这个...

    json 中文乱码解决方案

    public @ResponseBody Map, String&gt; getJsonData() { Map, String&gt; map = new HashMap(); map.put("message", "你好,世界!"); return map; } ``` **配置文件** (`web.xml` 或 `spring-mvc.xml`): ```...

    HttpClient、乱码解决:实例

    在实际使用中,由于网络传输和编码转换的问题,可能会遇到乱码问题。本篇将详细介绍如何使用HttpClient解决乱码问题。 一、HttpClient基本使用 HttpClient主要由以下几个核心组件构成: 1. HttpClient:客户端实例...

    SSM框架整合(解决中文乱码,二级缓存,JSON,事务)

    在Controller方法中,可以使用`@ResponseBody`注解将返回值直接转化为JSON响应。 根据提供的文件名,`test.sql`可能包含一些测试用的SQL脚本,用于初始化数据库。`.png`文件可能是流程图或配置示意图,帮助理解配置...

    SpringMVC+Mybatis JAVA配置 非XML

    1,搭建SpringMVC 2,加载properties配置文件 3,集成mybatis ...7,解决@ResponseBody return String的中文乱码问题 8,配置静态资源映射ResourceHandlers 9,配置ViewControllers 10,配置filter 11,配置拦截器

    SpringMVC+Mybatis+Maven 纯XML配置

    1,搭建SpringMVC 2,加载properties配置文件 3,集成mybatis ...7,解决@ResponseBody return String的中文乱码问题 8,配置静态资源映射ResourceHandlers 9,配置ViewControllers 10,配置filter 11,配置拦截器

    Springmvc如何返回xml及json格式数据

    如果返回的是字符串,那么需要设置正确的字符编码,防止中文乱码。例如: ```java @RequestMapping(value = "/rss", produces = "application/xml;charset=utf-8") @ResponseBody public String loadRss() ...

    Springmvc完成ajax功能实例详解

    通过使用`@ResponseBody`注解和Jackson库,我们可以方便地将Java对象转换为JSON,然后通过AJAX发送到客户端。同时,注意设置正确的字符编码,以确保中文字符能正确显示。通过实践这些知识点,你可以在你的项目中轻松...

    前后端分离—JSON

    @ResponseBody public String json1() { User u = new User(张三,18); ObjectMapper obj = new ObjectMapper(); return obj.writeValueAsString(u); } 需要注意的是,这个返回对象会出现乱码,这里有两种解决...

    flex上传下载 并解决中文乱码

    public @ResponseBody String handleUpload(MultipartHttpServletRequest request) { Enumeration&lt;String&gt; paramNames = request.getParameterNames(); while (paramNames.hasMoreElements()) { String paramName...

    Bootstrap分页

    //处理乱码 Map, Object&gt; map = new HashMap, Object&gt;(); username=(username==null)?"":username; map.put("username", username);//username必须要和ibatis配置的property=username一致 Integer ...

    单文件与多文件上传uploadify控件的java版本

    public @ResponseBody String handleFileUpload(@RequestParam("file") MultipartFile file) { // 保存文件到服务器 } ``` ### 多文件上传 多文件上传则允许用户一次选择并上传多个文件。在Uploadify中,只需开启...

    vb utf8转Unicode

    本文将详细介绍如何在VB中实现UTF-8到Unicode的转换,解决在使用`StrConv`函数时遇到的中文乱码问题。 #### 二、背景知识 1. **UTF-8与Unicode**: - **UTF-8**是一种变长字符编码,用于表示Unicode标准中的字符...

Global site tag (gtag.js) - Google Analytics