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

原创 2017年01月03日 13:51:33

一、现象:

使用pojo对象产生的json不会乱码,但使用map存放数据后,再使用json转换工具时就会产生乱码。

* 二、原因:*

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

三 、解决方法:

1、第一种方法:

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

@RequestMapping(value = "/picupload", produces = "application/json; charset=utf-8")
    @ResponseBody
    public String uploadPicture(
            @RequestParam(value = "file", required = false) MultipartFile uploadFile,
            HttpServletRequest request) {
        Map map = null;
        if (uploadFile == null || uploadFile.isEmpty()) {
            map = new HashMap();
            map.put("error", 1);
            map.put("msg", "上传文件不能为空");
        } else {
            if (request instanceof MultipartHttpServletRequest) {
                map = picService.uploadPicture(uploadFile);
            } else {
                map = new HashMap();
                map.put("error", 1);
                map.put("msg", "当前请求类型不是multipart/form-data");
            }
        }
        String result = JsonUtils.objectToJson(map);
        return result;
    }

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

2、第二种方法(在spring MVC3.0以上这个配置是不能用的):

在配置文件中加入

<mvc:annotation-driven>
    <!-- 解决ResponseBody中文乱码 -->
    <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

版权声明:本文为博主原创文章,未经博主允许不得转载。

解决@ResponseBody注解返回中文乱码

解决@ResponseBody注解返回中文乱码 messageConverters supportedMediaTypes
  • zknxx
  • zknxx
  • 2016年09月03日 16:50
  • 12502

Spring MVC Controller中返回json数据中文乱码处理

问题 在使用Spring MVC Controller的过程中,发现返回到客户端的的中文出现乱码。后台JAVA代码: @RequestMapping(value = "/upload", m...
  • hongweigg
  • hongweigg
  • 2016年08月24日 15:04
  • 15918

彻底解决Spring MVC 中文乱码 问题

1:表单提交controller获得中文参数后乱码解决方案 注意: jsp页面编码设置为UTF-8 form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果 修改w...
  • kalision
  • kalision
  • 2015年06月10日 14:03
  • 197118

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

SpringMVC的@ResponseBody注解可以将请求方法返回的对象直接转换成JSON对象,但是当返回值是String的时候,中文会乱码   原因是因为其中字符串转换和对象转换用的是两个转换...
  • wmq534
  • wmq534
  • 2014年05月28日 14:58
  • 582

Spring Mvc @ResponseBody String返回中文字符串乱码

Spring Mvc @ResponseBody 修饰方法返回String类型,出现乱码
  • LittleSkey
  • LittleSkey
  • 2016年10月19日 19:32
  • 3706

spring mvc @ResponseBody返回中文乱码解决

sping mvc中添加@ResponseBody,返回中文字符串时出现乱码,且在applicationContext-web.xml中已经配置StringHttpMessageConverter ...
  • yu870646595
  • yu870646595
  • 2016年06月12日 18:22
  • 392

[Spring MVC] @ResponseBody返回结果乱码问题的解决

发现问题 在Controller类方法上加@ResponseBody,直接返回字符串,结果乱码。 如下所示: MockHttpServletResponse:...
  • ywb201314
  • ywb201314
  • 2016年04月14日 10:15
  • 229

Spring MVC使用@ResponseBody返回JSON数据406以及乱码问题解决方案

其实前面一篇关于zTree返回JSON数据的文章已经有一种解决方案了,但是当我今天在新公司搭建新环境的时候,发现决然又不行了,所以我觉得那应该不是最优的解决方案。 说起来,我以前接触到的一个项目,根本...
  • wushuang5566110
  • wushuang5566110
  • 2016年11月25日 09:52
  • 374

Spring MVC使用@ResponseBody返回JSON数据406以及乱码问题解决方案

参考地址:http://www.aichengxu.com/view/1014399 第一步,引入包: jackson-core2.2.3jackson-databind2.2.3jackson-a...
  • u012953466
  • u012953466
  • 2016年03月17日 22:43
  • 600

springmvc Spring3 MVC @ResponseBody返回,jquery ajax调用中文乱码问题解决

转自:http://blog.csdn.net/xiaoxin888888/article/details/8279745 转自:http://thoughtfly.iteye.com/blog/1...
  • super2007
  • super2007
  • 2013年06月15日 19:05
  • 3043
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决Spring MVC @ResponseBody返回中文字符串乱码问题
举报原因:
原因补充:

(最多只允许输入30个字)