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

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

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

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

WebMvcConfigurerAdapter 是springmvc的一个配置支配器类,我们可以实现我们感兴趣的方法。

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

到此这篇关于springboot全局字符编码设置解决乱码问题的文章就介绍到这了,更多相关springboot 全局字符编码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解SpringBoot优雅编码之Lombok加持

    本文介绍了SpringBoot优雅编码之Lombok加持,分享给大家,具体如下: 概述 Lombok 通过提供简单的语法注解形式来帮助简化消除一些必须有但显得很臃肿的 java 代码.典型的是对于 POJO对象的简化(如自动帮我们生成Setter和Getter等),有了Lombok的加持,开发人员可以免去很多重复且臃肿的操作,极大地提高java代码的信噪比,因此我们必须尝试并应用起来! IntelliJ IDEA上配置 方法一:直接在IDEA界面中配置 首先进入Plugins界面: 然后搜索并安

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

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

  • MySQL字符编码设置方法

    通过show variables like 'character_set%%';查看编码 修改mysql的编码方式可以有以下几个: 1.通过配置文件修改my.ini(windows下)或/etc/my.cnf(linux下) 分别添加如下内容 [mysqld] character_server_set=utf8 [mysql] default-character-set=utf8 [mysql.server] default-character-set=utf8 [mysql_safe] def

  • Java基础字符编码与内存流详细解读

    目录 1.字符编码 1.1 常用字符编码 1.2 乱码产生分析 2.内存流基本操作 3.打印流 3.1 格式化文本信息 4. System类 4.1 系统输出 4.2 系统输出 4.3 系统输入 5.BufferedReader类 6.Scanner 7.对象序列化 7.1 对象序列化的概念 7.2 实现序列化和反序列化 7.3 transient关键字(了解) 1.字符编码 1.1 常用字符编码 在计算机的世界之中,所有的显示文字都是按照其指定的数字编码进行保存的,如果没有正确的解码,那么就坑

  • 再谈Python中的字符串与字符编码(推荐)

    本节内容: 1.前言 2.相关概念 3.Python中的默认编码 4.Python2与Python3中对字符串的支持 5.字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章.有的人云亦云,也有的写得很深入.近日看到某知名培训机构的教学视频中再次谈及此问题,讲解的还是不尽人意,所以才想写这篇文字.一方面,梳理一下相关知识,另一方面,希望给其他人些许帮助. Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码:Python3的

  • 解决JavaEE开发中字符编码出现乱码的问题

    网上有很多处理字符编码的解决方案,在此,我站着前人的肩膀上作自己的总结. 在我看来,出现乱码问题的解决方法无非就是在3个地方进行编码设置: 1.HTML.JSP等前端页面: 2.后台servlet中request和response对象: 3.服务器配置文件. 1.HTML.JSP等前端页面,出现编码首先看前端某个页面的Meta标签是否正确设置了编码,这个Meta标签也就是页面的头部 <%@ page language="java" import="java.util.*

  • linux下因为系统编码问题造成乱码的快速解决方法

    最近一段时间遇到一些润乾的应用在linux系统下面乱码的问题,最后检查后都发现是客户的linux系统默认编码设置的不正确造成的,这种原因造成乱码的现象一般都是程序里面写死了的中文字符能正常展现,但是从数据库中取出来的或者从程序中读出来的中文字符就会出现乱码. 下面就介绍一下由于linux系统编码设置不正确造成润乾报表应用乱码问题的解决办法. 第一步:检查linux的系统编码. 检查linux的系统编码,确定系统是否支持中文.在linux系统的终端中输入命令:locale,就会看到打印出的系统编码

  • 使用bat启动springboot项目并解决乱码问题

    目录 1.springboot项目打包jar 2.编写bat启动springboot脚本 3.bat启动springboot 4.常见问题 4.1.解决bat控制台中文乱码问题 4.2.cd %~dp0不是内部或外部命令 本文主要介绍了使用bat启动springboot项目并解决乱码问题,分享给大家,具体如下: 1.springboot项目打包jar 打包后,在如下目录: 这里打包的springboot的jar文件名为 api-0.0.1-SNAPSHOT.jar 2.编写bat启动spring

  • Python3如何解决字符编码问题详解

    编码 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节.比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295. 由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母.数字和一些符号,这个编码表被称为ASC

  • 基于tomcat8 编写字符编码Filter过滤器无效问题的解决方法

    同事遇到编码问题时想做一个解决全站的字符编码过滤器,过滤器类和配置如下: 过滤器类: <span style="font-size:12px;">package com.chaoxing.newspaper.web.filter; import java.io.IOException; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.r

  • 使用AJAX实现UTF8编码表单提交到GBK编码脚本无乱码的解决方法

    1.表单项目1 GBK编码格式 用户采集单是GBK编码,通过GET/POST提交上来的数据也是GBK格式,无需做任何处理 测试源码 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="GB2312"> </head> <body> <li><a href="gbkForm.html" rel=&

随机推荐