Spring boot的中文乱码问题解决

2020-01-17  本文已影响0人  机灵鬼鬼

spring boot有很多场景的编码转换
常件的也就2种
有专门处理配置文件中参数的编码
有专门处理http数据通讯的参数编码

本来以前通过实现boot的这个类WebMvcConfigurerAdapter来处理不同场景下的编码转换问题。如下

/**
 * 中文乱码解决
 */
@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);
    }

而现在WebMvcConfigurerAdapter 类已经被保护起来了,后期版本估计要作废掉取而代之的是另一个类,是对他的扩展和优化就是WebMvcConfigurationSupport类。我强烈推荐这个编码转换服务,也是需要实现它的方法,如下

/**
 * 中文乱码解决
 */
@Configuration
public class CharsetConfig extends WebMvcConfigurationSupport {
    //http请求时编码
    @Bean
    public HttpMessageConverter<String> responseBodyConverter() {
        StringHttpMessageConverter converter = new StringHttpMessageConverter(
                Charset.forName("UTF-8"));        
        return converter;
    }

    /**
     * 系统配置参数编码
     * @param converters
     */
    @Override
    protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        super.configureMessageConverters(converters);
        converters.add(responseBodyConverter());
    }
}
///以上这两个编码转换方法都是在服务启动之时就加载进入spring容器。
上一篇下一篇

猜你喜欢

热点阅读