• spring boot--解决中文乱码问题


    前言

      在spring boot请求返回中文的时候,有时会出现中文字符为乱码或者是????的情况,这是因为spring boot 默认的StringHttpMessageConverter值为:ISO_8859_1,我们只需要将其改为:utf-8即可

    代码

    @Configuration
    public class CustomMVCConf extends WebMvcConfigurationSupport { 
       //覆写extendMessageConverters方法即可 @Override protected
    void extendMessageConverters(List<HttpMessageConverter<?>> converters) { for (HttpMessageConverter<?> converter :converters){ if(converter instanceof StringHttpMessageConverter){ ((StringHttpMessageConverter)converter).setDefaultCharset(StandardCharsets.UTF_8); //将StringHttpMessageConverter改为utf-8 } } super.extendMessageConverters(converters); } }

    需要注意的是

      不要使用多个class继承WebMvcConfigurationSupport类进行覆写配置,因为只有一个class会生效,原因可以参考这篇文章

    @Configuration
    public class CustomMVCConf extends WebMvcConfigurationSupport {
        //复写addCorsMappings 方法,实现cors
        @Override
        protected void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedMethods("*")
                    .allowedOrigins("*")
                    .allowedHeaders("*");
            super.addCorsMappings(registry);
        }
        //复写extendMessageConverters 方法,解决中文乱码或????号问题
        @Override
        protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
            for (HttpMessageConverter<?> converter :converters){
                if(converter instanceof StringHttpMessageConverter){
                    ((StringHttpMessageConverter)converter).setDefaultCharset(StandardCharsets.UTF_8);
                }
            }
            super.extendMessageConverters(converters);
        }
    }

     

    多个class配置WebMvcConfig

      如果你觉得所有的配置都写在一个class类,太过于臃肿,那么可以使用implements实现接口的方式,使用多个了配置

      config1 class

    @Configuration
    public class CustomMVCConf implements WebMvcConfigurer {
        //复写addCorsMappings 方法,实现cors
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedMethods("*")
                    .allowedOrigins("*")
                    .allowedHeaders("*");
            WebMvcConfigurer.super.addCorsMappings(registry);
        }
    }

      config2 class

    @Configuration
    public class CustomMVCConf2 implements WebMvcConfigurer {
        @Override
        public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
            for (HttpMessageConverter<?> converter : converters) {
                if (converter instanceof StringHttpMessageConverter) {
                    ((StringHttpMessageConverter) converter).setDefaultCharset(StandardCharsets.UTF_8);
                }
            }
            WebMvcConfigurer.super.extendMessageConverters(converters);
        }
    }
  • 相关阅读:
    hdu1238 Substrings
    CCF试题:高速公路(Targin)
    hdu 1269 迷宫城堡(Targin算法)
    hdu 1253 胜利大逃亡
    NYOJ 55 懒省事的小明
    HDU 1024 Max Sum Plus Plus
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1257 最少拦截系统
    HDU 1069 Monkey and Banana
    HDU 1104 Remainder
  • 原文地址:https://www.cnblogs.com/wrhbk/p/15160552.html
Copyright © 2020-2023  润新知