zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    深入解读kubernetes网络基本原理
    Go!Go!Go!设计模式-组合设计模式
    Go!Go!Go!设计模式-创建型模式(简单工厂,工厂方法,抽象工厂)
    Linux内核之磁盘和分区
    Docker容器网络基础
    chart仓库之创建-入库-使用(helm,helm-push,chartmuseum)
    Go语言完整解析Go!Go!Go!(一)数据类型 之 Channel & Goroutine
    k8s爬坑集锦[网络问题]-服务无法访问
    数字证书的原理与应用&爬坑
    ingress的用法与原理
  • 原文地址:https://www.cnblogs.com/wrhbk/p/15160552.html
Copyright © 2011-2022 走看看