
最近在公司项目当中 升级了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; }