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

springboot全局字符编码设置(解决乱码问题)有时候我们会发现这种问题,明明已经设置了字符编码过滤器但是还会有乱码的情况出现,这个问题令我们很是头疼,我之前也遇到过这种情况。那怎么解决呢?springboot编码格式设置有三种方式,不管使用哪种方式,总有一款适合你。1、在application.properties中设置#编码格式spring.http.encoding.force=truespring.http.encod…

大家好,又见面了,我是你们的朋友全栈君。

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

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

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

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 即可

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

WebMvcConfigurerAdapter 是springmvc的一个配置支配器类,我们可以实现我们感兴趣的方法。springboot全局字符编码设置(解决乱码问题)

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

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

能力一般,水平有限,如有错误,请多指出。
如果对你有用点个关注给个赞呗,
如果对你有用,可以关注一下我的微信公众号suncodernote

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130114.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(2)
blank

相关推荐

  • delphixe5 android,Delphi XE5 Android手机端转换Ansi字符串

    delphixe5 android,Delphi XE5 Android手机端转换Ansi字符串介绍本文章介绍了DelphiXE5Android手机端转换Ansi字符串,本代码是“浙江-樵夫”开发的一个程序,用来对字符串进行转换,主要代码是://读入Ansi(简体中文)文件…procedureTForm1.CornerButton3Click(Sender:TObject);varStream:TMemoryStream;beginStream:=TMemoryStream….

  • Java 安全之Java Agent

    Java安全之JavaAgent0x00前言在前面发现很多技术都会去采用JavaAgent该技术去做实现,比分说RASP和内存马(其中一种方式)、包括IDEA的这些破解都是基于JavaA

    2021年12月12日
  • 弗曼学习法,你在用吗?

    弗曼学习法,你在用吗?今天简单的谈论一下弗曼学习法,是被学术界认为最niubi的学习方法。理查德.弗曼(1918-1988)1965年获得诺贝尔物理学奖,美籍犹太人,也是最早提出纳米的人。之所以以他的名字命名改学习方法,想必不用说大家也都知道了,总之很厉害一个人就是了。 弗曼学习法的原理,可以用一句话来概括(透过现象看本质),比方说我们刚学习、接触一个知识点,按照正常的逻辑就是去学会怎么使用它就行了,而带来的弊端就是,当时,亦或者一段时间内我们能记得,但是随着时间加长,没有使用过这个知识点,我们便会很快就忘记了。因为我

  • MySql多表、多字段分组,多字段去重「建议收藏」

    MySql多表、多字段分组,多字段去重「建议收藏」直接了当上SQL SELECT a.字段1, a.字段2, b.字段1, COUNT(DISTINCT a.字段1),COUNT(DISTINCT b.字段1) FROM xs_highway_transport_log a LEFT JOIN b表 b ON b.id = a.main GROUP BY a.字段1 ,b.字段1// 这行为分组直接这样 即可实现 多字段去重情况。同时可以配合having过滤分组,也可以在 分组

  • DB2 递归查询_oracle递归查询所有子节点

    DB2 递归查询_oracle递归查询所有子节点以父子节点定义的表数据递归查询:DB2 递归查询WITH temp(id,parentid,level)    AS   ( SELECT id,parentid,0   FROM AMIS_WF_NODE WHERE parentid = ‘4028e48146a3c33d0146a3cd9e860022’  UNION ALL   SELECT b.id,b.pare

    2022年10月27日
  • 如何使用PLATFORM SDK

    如何使用PLATFORM SDK安装好SDK后,打开VC 在菜单中选择TOOL->OPTIONS->DIRECTORIES 在INCLUDEFILES中把SDK的INCLUDE目录添加到里面,把它放在第一项,就可以用SDK了。 

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号