栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

Spring Boot 中文乱码问题解决方案汇总

Java 更新时间:发布时间: 百科书网 趣学号

最近在公司项目当中 升级了Springboot 版本 出现一点小问题(乱码了)

访问地址  本文当中使用是httpClient 测试

###
GET http://localhost:8081/ebook/list?pageNum=1&pageSize=10000
Accept: application/json

结果为

 跑起来后  发现乱码了  就去百度了一下  后面发现百度上说的都设置还是没有效果 不知道是不是自己傻 没有找到对应文章 

经过自己研究和看文档 有2种方式可以解决这个问题  

解决方案 一 

在配置文件中进行如下修改 

# 解决接口返回中文都是乱码
server.servlet.encoding.charset=utf-8
server.servlet.encoding.force=true
server.servlet.encoding.enabled=true

访问一下 查看一下结果 如下

当然 你如果是.yml 配置的话 把配置文件那里复制一下 去这个网站生成一下就好了   网址如下http:// toyaml.com/index.html

解决方案二 自己写个类 继承 WebMvcConfigurationSupport 这个类  代码如下

package com.zw.wiki.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import java.nio.charset.StandardCharsets;
import java.util.List;


@Configuration
public class MvcConfigGarbled extends WebMvcConfigurationSupport {

    @Override
    protected void extendMessageConverters(List> converters) {
        for (HttpMessageConverter converter : converters) {
            // 解决 Controller 返回普通文本中文乱码问题
            if (converter instanceof StringHttpMessageConverter) {
                ((StringHttpMessageConverter) converter).setDefaultCharset(StandardCharsets.UTF_8);
            }

            // 解决 Controller 返回json对象中文乱码问题
            if (converter instanceof MappingJackson2HttpMessageConverter) {
                ((MappingJackson2HttpMessageConverter) converter).setDefaultCharset(StandardCharsets.UTF_8);
            }
        }
    }

}

 原理如下 

protected final List> getMessageConverters() {
  if (this.messageConverters == null) {
    this.messageConverters = new ArrayList<>();
    
    configureMessageConverters(this.messageConverters);
    if (this.messageConverters.isEmpty()) {
      // 添加默认的各种converter
      addDefaultHttpMessageConverters(this.messageConverters);
    }
    
    extendMessageConverters(this.messageConverters);
  }
  return this.messageConverters;
}

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/273725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号