如何解决Spring Boot中的中文乱码问题? 您所在的位置:网站首页 type中文乱码 如何解决Spring Boot中的中文乱码问题?

如何解决Spring Boot中的中文乱码问题?

2023-10-31 04:49| 来源: 网络整理| 查看: 265

前言

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot 被认为是 Spring MVC 的“接班人”,它可以帮我们自动配置,如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用自己的配置。

一、如何解决Spring Boot中的中文乱码问题? 1. 编写返回内容包含中文的API;

随便在一个Spring Boot项目中的controller中添加一个API,如下:

@GetMapping("/api/hello") public JSONObject sayHello() { JSONObject test = new JSONObject(); test.put("name", "dylanz"); test.put("say", "您好"); return test; } 2. 中文乱码演示;

我们会发现,API返回中,英文正常显示,而中文却乱码了!原因先不分析,我们先来看看怎么解决!

3. 解决中文乱码:(方法一);

如何解决呢,非常简单,修改一下API:

@GetMapping("/api/hello") public JSONObject sayHello() { HttpServletResponse response = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getResponse(); assert response != null; response.setCharacterEncoding("UTF-8"); JSONObject test = new JSONObject(); test.put("name", "dylanz"); test.put("say", "您好"); return test; }

原理非常简单,就是在返回中的头部信息中指定字符集为UTF-8,亲测有效!

修复中文乱码

指定字符集为UTF-8

4. 解决中文乱码:(方法二);

这种办法更为简单,比第一种还简单,只需要在API上指定produces即可,如:

@GetMapping(value = "/api/hello", produces = "application/json;") public JSONObject sayHello() { JSONObject test = new JSONObject(); test.put("name", "dylanz"); test.put("say", "您好"); return test; }

这种方式同样可以解决中文乱码问题,亲测有效!

5. 解决中文乱码:(方法三)- 全局解决中文乱码问题;

上述解决中文乱码的2种方式固然简单,但需要一个一个API添加,这不符合咱们的气质啊,正确的姿势应该是:全局解决中文乱码问题!

在config包内新建CharsetConfig.java类(类名不限,不是非得CharsetConfig),在该配置类中写入代码: package com.github.dylanz666.config; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; /** * @author : dylanz * @since : 11/15/2020 */ @Configuration public class CharsetConfig extends WebMvcConfigurationSupport { @Bean public HttpMessageConverter responseBodyConverter() { return new StringHttpMessageConverter( StandardCharsets.UTF_8); } @Override public void configureMessageConverters( List


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有