springboot全局字符编码设置(解决乱码问题)

简介: springboot全局字符编码设置(解决乱码问题)

有时候我们会发现这种问题,明明已经设置了字符编码过滤器但是还会有乱码的情况出现,这个问题令我们很是头疼,我之前也遇到过这种情况。那怎么解决呢?


springboot编码格式设置有三种方式,不管使用哪种方式,总有一款适合你。


1、在application.properties中设置

#编码格式
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8

如果出现乱码问题,这种方式解决的可能性不大,但可以尝试一下,希望还是要有的,万一解决了呢,因为查看源码发现springboot默认的编码格式就是UTF-8

image.png

2、自己手写编码过滤器

//字符编码过滤器
@WebFilter(urlPatterns = "/*",filterName = "CharacterEncodingFilter")
public class CharacterEncodingFilter implements Filter{
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        filterChain.doFilter(request , response);
    }
    @Override
    public void destroy() {
    }
}
如果这种方式也解决不了问题的话,只能使用最后一种方式了。

3、使用java配置写一个字符编码配置类

/**
 * 中文乱码解决
 */
@Configuration
public class CharsetConfig extends WebMvcConfigurerAdapter {
    @Bean
    public HttpMessageConverter<String> responseBodyConverter() {
        StringHttpMessageConverter converter = new StringHttpMessageConverter(
                Charset.forName("UTF-8"));
        return converter;
    }
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        super.configureMessageConverters(converters);
        converters.add(responseBodyConverter());
    }
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false);
    }
}
StringHttpMessageConverter是一个请求和响应信息的编码转换器,通过源码我们发现默认编码ISO-8859-1,不是UTF-8,所以我们只要通过上述配置将请求字符串转为UTF-8 即可

image.png

WebMvcConfigurerAdapter 是springmvc的一个配置支配器类,我们可以实现我们感兴趣的方法。

image.png

其实现的接口WebMvcConfigurer 定义了一些回调方法为springmvc提供一个通道通过java基本的配置。

image.png

能力一般,水平有限,如有错误,请多指出。

如果对你有用点个关注给个赞呗,

如果对你有用,可以关注一下我的微信公众号suncodernote

目录
相关文章
|
18天前
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
46 1
|
6月前
|
Java Spring
Springboot+jpa如何设置启动项目表不存在就主动创建,字段没有就新增
Springboot+jpa如何设置启动项目表不存在就主动创建,字段没有就新增
497 0
|
1月前
|
存储 Java API
简单两步,Spring Boot 写死的定时任务也能动态设置:技术干货分享
【10月更文挑战第4天】在Spring Boot开发中,定时任务通常通过@Scheduled注解来实现,这种方式简单直接,但存在一个显著的限制:任务的执行时间或频率在编译时就已经确定,无法在运行时动态调整。然而,在实际工作中,我们往往需要根据业务需求或外部条件的变化来动态调整定时任务的执行计划。本文将分享一个简单两步的解决方案,让你的Spring Boot应用中的定时任务也能动态设置,从而满足更灵活的业务需求。
95 4
|
3月前
|
Java Spring 开发者
解锁 Spring Boot 自动化配置的黑科技:带你走进一键配置的高效开发新时代,再也不怕繁琐设置!
【8月更文挑战第31天】Spring Boot 的自动化配置机制极大简化了开发流程,使开发者能专注业务逻辑。通过 `@SpringBootApplication` 注解组合,特别是 `@EnableAutoConfiguration`,Spring Boot 可自动激活所需配置。例如,添加 JPA 依赖后,只需在 `application.properties` 配置数据库信息,即可自动完成 JPA 和数据源设置。这一机制基于多种条件注解(如 `@ConditionalOnClass`)实现智能配置。深入理解该机制有助于提升开发效率并更好地解决问题。
72 0
|
5月前
|
easyexcel Java Maven
springboot使用EasyExcel导入导出填充,解决导出乱码问题(web)
springboot使用EasyExcel导入导出填充,解决导出乱码问题(web)
708 5
|
4月前
|
Java
springBoot如何设置yml文件,设置端口号
springBoot如何设置yml文件,设置端口号
|
5月前
|
Java
springboot集成swagger2并分组全局设置Authorization
springboot集成swagger2并分组全局设置Authorization
193 0
|
6月前
|
Java 测试技术 数据库
SpringBoot启动时设置不加载数据库
SpringBoot启动时设置不加载数据库
376 0
|
6月前
|
Java 应用服务中间件
SpringBoot 启动参数设置环境变量、JVM参数、tomcat远程调试
SpringBoot 启动参数设置环境变量、JVM参数、tomcat远程调试
391 0
|
6月前
|
Java
SpringBoot利用外部配置,来设置jar包运行配置
SpringBoot利用外部配置,来设置jar包运行配置
85 0
下一篇
无影云桌面