`

解决Spring MVC @ResponseBody返回中文字符串乱码问题

 
阅读更多

引起乱码原因为spring mvc使用的默认处理字符串编码为ISO-8859-1,具体参考org.springframework.http.converter.StringHttpMessageConverter类中public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");

 

 

  • 第一种方法:

 

对于需要返回字符串的方法添加注解,如下:

	/***
	 * 返回类型是string需要用produces进行转码,并格式化
	 * json格式化 可以用Gson处理(obj <-> json)互相转换
	 * @return
	 * @date 2017年5月12日
	 * @author wanwenjun
	 */
	@RequestMapping(value="/stu",produces="application/json; charset=utf-8")
	@ResponseBody
	public String getStudent(){
		
		Student s = (Student) SpringContext.getBean("student");
		
		Gson gson = new Gson();
		
		//obj to String
		String stu = gson.toJson(s);
		
		//String to obj
		Student s2 = gson.fromJson(stu,Student.class);
		
		System.out.println(s2.toString());
		
		return stu;
	}

 使用modelandview,需Jackson支持,如下:

	/****
	 * 效果和Map一致,但需要jackson jar包支持
	 * @date 2017年5月12日
	 * @author wanwenjun
	 * @return ModelAndView
	 */
	@ResponseBody
	@RequestMapping(value="/student")
	public ModelAndView getStu(String a){
		Student s = (Student) SpringContext.getBean("student");
		
		Map<String, Student> map = new HashMap<>();
		map.put("stu", s);
		
		return new ModelAndView(new MappingJackson2JsonView(),map);
	}

 

 

上述方法只针对单个调用方法起作用。

两种方式有什么区别呢?

方式一:使用ModelAndView的contentType是"application/json"

方式二:返回String的            contentType是"text/html"

那么如何设置response的content type呢?

使用注解@RequestMapping 中的produces:

  • 第二种方法

在配置文件中加入:

<mvc:annotation-driven>
     <mvc:message-converters register-defaults="true">
    <bean class="org.springframework.http.converter.StringHttpMessageConverter">
      <property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
    </bean>
   </mvc:message-converters>
     </mvc:annotation-driven>

 参考:http://stackoverflow.com/questions/3616359/who-sets-response-content-type-in-spring-mvc-responsebody

分享到:
评论

相关推荐

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

    然而,当返回的字符串中包含中文字符时,如果没有正确设置编码,就可能导致乱码问题。本文将详细介绍如何解决SpringMVC中`@ResponseBody`注解返回中文乱码的问题。 首先,我们可以尝试使用`@RequestMapping`注解的`...

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

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

    json 中文乱码解决方案

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

    spring mvc 自學筆記

    - **JSON 对象绑定**:Spring 支持直接将 JSON 字符串转换为 Java 对象。 ```java @RequestMapping(value = "/ajax", method = RequestMethod.POST) @ResponseBody public String handleAjaxRequest(@RequestBody ...

    Spring MVC注解开发总结

    1. **避免Spring错误加载Spring MVC**:在`getServletMappings()`方法中,返回`"/"`以指定Spring MVC处理所有请求,避免Spring容器错误地加载到Spring MVC之外的配置。 2. **乱码处理**:可以通过自定义Filter来...

    Spring MVC面试题(2022最新版)

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

    Spring MVC 关于controller的字符编码问题

    当涉及到非英文字符,如中文,时,字符编码问题可能会导致乱码。这是因为Spring MVC默认使用ISO-8859-1字符集,而中文字符不在这个字符集中。 在处理字符编码问题时,有几种常见的解决方案: 1. **不使用`@...

    Spring MVC面试宝典1.pdf

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

    jackon 2.9.1

    Jackson是Spring框架中常用来处理HTTP响应体,特别是当使用`@ResponseBody`注解时,它可以将Java对象转换成JSON格式的字符串,直接返回给客户端。 在描述中提到了`@ResponseBody`注解,这是Spring MVC框架的一部分...

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

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

    SpringMVC解决乱码

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

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

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

    Spring MVC的文件下载实例详解

    为了解决这一问题,示例中根据请求头中的User-Agent字符串来判断客户端是否为IE浏览器。如果是IE浏览器,需要对文件名进行URL编码,并且将空格替换为%20,以确保文件名的正确显示。 此外,示例还展示了如何在控制器...

    springmvc 发送ajax出现中文乱码的解决方法汇总

    在开发Web应用时,Spring MVC和Ajax的交互过程中,经常遇到中文乱码的问题。这个问题主要出现在数据从服务器传输到客户端的过程中,由于编码设置不正确,导致中文字符无法正常显示。以下将详细介绍四种解决Spring ...

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

    该注解使得Spring MVC框架会将返回的对象自动转换为JSON格式的字符串。然而,默认情况下,Spring框架使用的字符编码可能是ISO-8859-1,而开发者在项目的编码实际上是使用了UTF-8。这就导致了字符编码不一致的问题,...

    Springmvc完成ajax功能实例详解

    由于有`@ResponseBody`注解,Spring MVC会自动将返回的字符串转换成JSON格式。 如果你需要返回一个Java对象,比如`User`,只需改变方法的返回类型: ```java @RequestMapping("Ajax2") @ResponseBody public User ...

    Java Web项目中Spring框架处理JSON格式数据的方法

    在旧版本的Spring中,可能会需要手动调用Gson的API来返回JSON字符串,但在新版本的Spring中,通过引入依赖和配置自动转换器,可以更为便捷地完成这一过程。 关于乱码问题,由于HTTP协议默认的字符编码为ISO-8859-1...

    基于java反射机制的山寨版WEB2

    为了解决中文乱码问题,需要在读写文件或响应时正确设置字符编码,例如设置UTF-8编码,确保文件名和内容在传输过程中不发生乱码。 2. **NEW和SPRING模式**: "NEW"模式可能指的是直接通过`new`关键字实例化对象,...

    解决SpringMvc后台接收json数据中文乱码问题的几种方法

    本文将深入探讨两种解决SpringMvc后台接收JSON数据中文乱码问题的方法。 1. **使用Ajax传输数据** 当前端通过Ajax使用JSON格式向SpringMvc后台发送数据时,可能出现中文乱码。这通常是因为服务器默认的字符编码不...

    SpringMVC【入门】篇

    3. 文件上传:SpringMVC 支持传统方式和跨服务器方式的文件上传,需要配置 Filter 解决中文乱码问题,并考虑 Tomcat 对某些操作的限制。 4. 异常处理:通过 @ExceptionHandler 注解定义全局异常处理器,实现统一的...

Global site tag (gtag.js) - Google Analytics