[SpringMVC] @ResponseBody 返回中文乱码

2024-06-23 12:08

本文主要是介绍[SpringMVC] @ResponseBody 返回中文乱码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考:解决SpringMVC的@ResponseBody返回中文乱码

原理见: SpringMVC 中 HTTP 请求与响应原理

1、现象


客户端代码

function fToSubmitNormal(e) {var oForm = {};oForm["labelname"] = "中文标签";oForm["status"] = 0;$.ajax({url: e.data.url,method: 'post',data: JSON.stringify(oForm),contentType: 'application/json',success: function(data) {console.log(data);},error: function(data) {console.log("saveObj error..."+data);}});},

服务端代码

    @RequestMapping(value = "/saveByModel")@ResponseBodypublic String saveByModel(@RequestBody Label label) {if(this.labelService.update(label) != 0){return "更新成功!";}return "更新标签失败!";}

结果:
乱码情形

2、原因

SpringMVC默认处理的字符集是ISO-8859-1。

接口定义为 @ResponseBody,使用的返回值处理器为 RequestResponseBodyMethodProcessor,使用HttpMessageConverter 消息转换机制,会调用对应的 HttMessageConverter 处理类。支持 String 类型的消息转换器有 StringHttpMessageConverter, MappingJackson2HttpMessageConverter。系统默认支持的媒体列表有:

MediaTypes

取得媒体列表后,会选取其中的一个:

selectMediaType

从图中可以看出 String 返回值类型取得的媒体类型为 text/plain;charset=ISO-8859-1,且使用 StringHttpMessageConverter 消息转换类。将该媒体类型设置为 responsecontentType, 因此返回中文乱码:

Content-Type

3、解决

可修改字符编码,如 springmvc.xml 文件加上如下配置:

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

正确结果:
正确结果

或者指定返回的编码集,如:

@RequestMapping(value = "/save-by-model", method = RequestMethod.POST, produces = "text/plain;charset=utf-8")
@ResponseBody
public String saveByModel(@RequestBody Category category) {return category.toString();
}

这篇关于[SpringMVC] @ResponseBody 返回中文乱码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1087113

相关文章

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依