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

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

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

(2)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 闪讯pppoe拨号模块损坏118_创翼pppoe拨号模块损坏

    闪讯pppoe拨号模块损坏118_创翼pppoe拨号模块损坏创翼错误118pppope拨号模块损坏.1809版本、创翼的bug一、新建一个.txt文件二、复制下面代码到.txt文件里并保存WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog]”ServiceDll”=hex(2):25,00,…

    2022年9月17日
    0
  • pycharm配置python运行环境_pycharm安装django

    pycharm配置python运行环境_pycharm安装django新手下载安装pycharm并且配置pycharm下载安装pycharm电脑是32位就选择32位电脑是64位就选择64位选择next就搞定了配置环境变量第一步、找到pycharm的程序文件的地址右键->属性->复制“起始位置”里面的位置第二步、添加到电脑的环境变量我的电脑->右键->属性->高级系统设置->高级->环境变量->Administrator->找到Path->编辑->新建->粘贴pycharm程序文件地址-&

    2022年8月28日
    0
  • oracle的游标 sql语句,sql游标

    oracle的游标 sql语句,sql游标sql游标游标的类型:1、静态游标(不检测数据行的变化)2、动态游标(反映所有数据行的改变)3、仅向前游标(不支持滚动)4、键集游标(能反映修改,但不能准确反映插入、删除)游标使用顺序:1、定义游标2、打开游标3、使用游标4、关闭游标5、释放游标Transact-SQL:declare游标名cursor[LOCAL|GLOBAL][FORWARD_ONLY|SCROLL][STATI…

    2022年7月27日
    1
  • pycharm2021.7.20激活码(注册激活)

    (pycharm2021.7.20激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSW…

    2022年3月20日
    67
  • curd php,laravel通用化的CURD的实现

    curd php,laravel通用化的CURD的实现说明非常高效的处理laravel中curd的操作安装composerrequireshencongcong/laravel-curd~1.0laravel项目的config/app.php注册ServiceProvider’providers’=>[//…Shencongcong\LaravelCurd\LaravelCurdServiceProvider::class…

    2025年6月16日
    0
  • SpringBoot在Tomcat部署war包[通俗易懂]

    SpringBoot在Tomcat部署war包[通俗易懂]启动类配置继承SpringBootServletInitializer@SpringBootApplicationpublicclassTestApplicationextendsSpringBootServletInitializer{publicstaticvoidmain(String[]args){SpringApplication.run(TestApplication.class,args);}@Override

    2022年6月12日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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