`

【转】Spring 使用 @ResponseBody 返回中文乱码问题解决

阅读更多

详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt102

 

今天在使用spring 的时候,发现中文返回的是乱码。

经过研究发现,主要是@ResponseBody 引起的。主要是由于 @ResponseBody 返回字符串结果的时候,使用了org.springframework.http.converter.StringHttpMessageConverter 中默认的编码。

请看 org.springframework.http.converter.StringHttpMessageConverter :

 

  1. public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> {  
  2.   
  3.     public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");  
  4.   
  5.     private final List<Charset> availableCharsets;  
  6.   
  7.     private boolean writeAcceptCharset = true;  
  8.   
  9.     public StringHttpMessageConverter() {  
  10.         super(new MediaType("text""plain", DEFAULT_CHARSET), MediaType.ALL);  
  11.         this.availableCharsets = new ArrayList<Charset>(Charset.availableCharsets().values());  
  12.     }  

 

默认情况下,是ISO-8859-1编码,我们要将ISO-8859-1编码改成utf-8编码。

 

  1. public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");    


我们的解决方法是,在spring-servlet.xml中,加入一个bean

 

 

  1. <bean  
  2.     class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
  3.     <property name="messageConverters">  
  4.         <list>  
  5.             <bean  
  6.                 class="org.springframework.http.converter.StringHttpMessageConverter">  
  7.                 <property name="supportedMediaTypes">  
  8.                     <list>  
  9.                         <bean class="org.springframework.http.MediaType">  
  10.                             <constructor-arg index="0" value="text" />  
  11.                             <constructor-arg index="1" value="plain" />  
  12.                             <constructor-arg index="2" value="UTF-8" />  
  13.                         </bean>  
  14.                     </list>  
  15.                 </property>  
  16.             </bean>  
  17.         </list>  
  18.     </property>  
  19. </bean>  
分享到:
评论

相关推荐

    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...

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

    在使用 Spring+Mybatis 框架时,经常会遇到一个问题,就是通过 @ResponseBody 返回结果时,中文字符会出现乱码的问题。这是因为在 Spring MVC 中,默认的字符编码是 ISO-8859-1,而中文字符需要使用 UTF-8 编码来...

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

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

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

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

    json 中文乱码解决方案

    本文将详细介绍如何解决JSON中的中文乱码问题,并提供几种简单实用的方法来帮助开发者避免这类问题的发生。 #### 一、问题背景与原因分析 在Web开发中,前后端之间传递的数据格式往往采用JSON(JavaScript Object ...

    SpringMVC解决乱码

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

    bundery#docs#问题3

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

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

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

    jackon 2.9.1

    总结来说,Jackson 2.9.1是一个用于处理JSON的Java库,常与Spring MVC结合使用,通过`@ResponseBody`注解实现将Java对象直接转换为JSON并返回给客户端。在实际应用中,需要注意依赖包的正确引入,以及处理字符集以...

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

    SSM框架整合是Java开发中常见的一种技术栈组合,包括Spring、Spring MVC和MyBatis。这个项目包针对的是在实际开发中可能会遇到的一些...通过这些文件,开发者可以学习如何配置和使用SSM框架,解决实际开发中的问题。

    SpringMVC请求/响应乱码问题解决方案解析

    "SpringMVC请求/响应乱码问题解决方案解析" SpringMVC请求/响应乱码问题是指在使用SpringMVC框架进行Web开发时,请求参数或响应内容出现乱码的问题。这种问题的出现是由于字符编码的不一致所引起的。本文将详细介绍...

    spring 问题总结实用知识库分享知识分享

    springMVC ResponseBody 返回汉字乱码解决方案 在使用 SpringMVC 时,可能会出现汉字乱码错误。解决方法是,使用 SpringMVC 的编码过滤器,确保响应体的编码正确,并且确保视图文件的编码正确。 springboot 提示...

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

    在本主题中,我们将深入探讨如何使用Flex进行文件上传和下载,并解决过程中可能出现的中文乱码问题。 一、Flex文件上传 1. Flex组件:Flex中可以使用`FileReference`组件来实现文件上传。用户通过选择文件后,`...

    Spring MVC面试宝典1.pdf

    ##### 3.4 如何解决POST请求中文乱码问题,GET的又如何处理呢? - **POST请求**:在web.xml中配置过滤器CharacterEncodingFilter来设置字符编码。 - **GET请求**:同样可以通过配置过滤器解决,也可以通过修改Tomcat...

    Spring MVC面试题(2022最新版)

    如何解决POST请求中文乱码问题,GET的又如何处理呢? - 对于POST请求,可以在web.xml中配置字符编码过滤器,确保所有请求都使用统一的字符编码: ```xml &lt;filter-name&gt;characterEncodingFilter &lt;filter-class&gt;...

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

    在Spring MVC中,开发Web应用时,经常需要处理XML和JSON这两种常见...避免一些错误尝试,如直接返回XML字符串或未序列化的对象,这可能会导致乱码或解析问题。通过合理的配置和优化,可以提高数据交换的效率和正确性。

    spring mvc 自學筆記

    在 Spring MVC 中处理中文乱码通常有两种方法: - **设置字符编码过滤器**:通过配置一个全局的字符编码过滤器来解决所有请求的乱码问题。 ```java @WebFilter(urlPatterns = "/*") public class ...

    JQuery异步获取返回值中文乱码的解决方法

    针对JQuery异步获取返回值时遇到中文乱码的问题,文档中提出了一个有效的解决方法,这涉及了Web开发中常见的字符编码问题。为了彻底解决这一问题,我们需要从客户端到服务器端的整个数据交互流程中对字符编码进行...

    Spring MVC注解开发总结

    2. **乱码处理**:可以通过自定义Filter来处理编码问题,例如设置请求和响应的字符编码。 3. **其他注解**:Spring MVC还有许多其他注解,如`@PathVariable`用于处理URI模板变量,`@RequestParam`用于处理请求参数...

Global site tag (gtag.js) - Google Analytics