千家信息网

SpringMvc返回@ResponseBody出现中文乱码该怎么办

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,SpringMvc返回@ResponseBody出现中文乱码该怎么办,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。使用SpringMvc
千家信息网最后更新 2025年01月18日SpringMvc返回@ResponseBody出现中文乱码该怎么办

SpringMvc返回@ResponseBody出现中文乱码该怎么办,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

使用SpringMvc的@ResponseBody返回指定数据的类型做为http体向外输出,在浏览器里返回的内容里有中文,会出现乱码,项目的编码、tomcat编码等都已设置成utf-8,如下返回的是一个字符串中文乱码。

Java代码

  1. @RequestMapping("user/get_comment_list.do")

  2. public @ResponseBody String getUserCommentList(Integer user_id,Byte type){

  3. HashMap map = new HashMap();

  4. map.put("type", type);

  5. map.put("user_id", user_id);

  6. CommentActPojo actPojo = new CommentActPojo();

  7. List list = this.bo.getComList(map);

  8. actPojo.setComments(list);

  9. //System.out.println("数据:"+JsonUtil.toJson(actPojo));//打印数据无中文乱码

  10. return JsonUtil.toJson(actPojo);

  11. }



SpringMvc使用的版本是3.2.2,后来网上找了一些资料,在@RequestMapping里强制指定返回的数据类型和字符编码,中文乱码解决,如下:

Java代码

  1. @RequestMapping(value="user/get_comment_list.do",produces = "application/json; charset=utf-8")


下载地址 最主流的Java后台 SSM 框架 springmvc spring mybatis 项目源码
问题来了,如果项目里有很多类似这样的请求,每个请求都去配置produces,会很累赘且繁琐,查看了一下源代码,发现在spring处理ResponseBody时涉及到org.springframework.http.converter.StringHttpMessageConverter这个类,该类在默认实现中将defaultCharset设为ISO-8859-1。当@RequestMapping标记的方法未配置produces属性时,将自动使用默认编码;如果配置了produces属性,AbstractHttpMessageConverter中的write方法将不会受supportedMediaTypes影响,而用produce设置的header赋值给contenttype。改造一下RequestMappingHandlerAdapter的配置,springMvc.xml如下:

Java代码

  1. "1.0" encoding="UTF-8"?>

  2. "http://www.springframework.org/schema/beans"

  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"

  4. xmlns:mvc="http://www.springframework.org/schema/mvc"

  5. xsi:schemaLocation="http://www.springframework.org/schema/beans

  6. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

  7. http://www.springframework.org/schema/context

  8. http://www.springframework.org/schema/context/spring-context-3.2.xsd

  9. http://www.springframework.org/schema/mvc

  10. http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

  11. class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">

  12. "messageConverters">

  13. class="org.springframework.http.converter.StringHttpMessageConverter">

  14. "supportedMediaTypes">

  15. text/plain;charset=UTF-8

  16. text/html;charset=UTF-8

  17. applicaiton/javascript;charset=UTF-8

  18. package="com.tcl.club.core" />

  19. package="com.cus.back" >

  20. "annotation" expression="org.springframework.stereotype.Service" />

  21. "multipartResolver"

  22. class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />

  23. "viewResolver"

  24. class="org.springframework.web.servlet.view.InternalResourceViewResolver">

  25. "viewClass"

  26. value="org.springframework.web.servlet.view.JstlView" />

  27. "prefix" value="/WEB-INF/view/" />

  28. "suffix" value=".jsp" />



上述springMvc.xml文件重新设置了StringHttpMessageConverter的编码方式,而不必在每个@RequestMapping里设置produces属性。如果返回的Jackson类型的数据,可以设置成如下:

Java代码

  1. class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

  2. "supportedMediaTypes">

  3. application/json; charset=UTF-8

  4. application/x-www-form-urlencoded; charset=UTF-8

看完上述内容,你们掌握SpringMvc返回@ResponseBody出现中文乱码该怎么办的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

乱码 中文 数据 编码 代码 方法 配置 内容 属性 类型 问题 项目 怎么办 字符 更多 累赘 繁琐 束手无策 为此 中将 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 确山县供电公司网络安全 网络技术防护采购项目 理解数据库管理系统的定义 单臂路由和ftp服务器 加强互联网医疗网络安全 c c 软件开发简历 网络安全保护制度是什么 软件开发模型适用于商业软件 数据库查询要求是啥 GO网络安全 GO 互联网金融网络技术风险 福昕软件开发有限公司 IPO 数据库三级模式从下往上 清远市技师学院软件开发 电商运营管理和网络技术 阿里云服务器突发性能型和共享型 方舟生存进化用虚拟运存建服务器 数据库服务器启动不了 安装用友T6数据库不符合 苏州一站式软件开发供应商 武汉易城互联网科技有限公司 网络安全短视频不超过一分钟 网络安全手抄报简单一些的 城管局网络安全风险评估 想学软件开发哪个培训机构好 软件开发 定制软件开发 马卡龙数据上传服务器 租界游戏服务器 angular数据库 美国nasa对我国网络安全影响
0