美文网首页
Spring boot的中文乱码问题解决

Spring boot的中文乱码问题解决

作者: 机灵鬼鬼 | 来源:发表于2020-01-17 15:09 被阅读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容器。
    

    相关文章

      网友评论

          本文标题:Spring boot的中文乱码问题解决

          本文链接:https://www.haomeiwen.com/subject/ajwczctx.html