java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot Controller直接返回String类型乱码

springboot Controller直接返回String类型带来的乱码问题及解决

作者:墨语wcy

文章介绍了在Spring Boot中,当Controller直接返回String类型时可能出现的乱码问题,并提供了解决办法,通过在`application.yaml`中设置请求和响应的编码格式,并在自定义配置类中进行配置,可以有效解决这一问题

springboot Controller直接返回String类型乱码

学习springboot路上遇到的一个小坑

就是controller在响应时如果直接返回String类型,得到的将是一串???的乱码

解决办法

就是配置请求个响应的编码格式

首先在 application.yaml 内设置 请求的编码格式

# Tomcat specifics
tomcat:
  uri-encoding: UTF-8

然后设置response响应的编码格式

在自定义的springboot配置类内加入

    @Bean
    public HttpMessageConverter<String> responseBodyConverter() {
        return new StringHttpMessageConverter(Charset.forName("UTF-8"));
    }
 
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(responseBodyConverter());
        // 这里必须加上加载默认转换器,不然bug玩死人,并且该bug目前在网络上似乎没有解决方案
        // 百度,谷歌,各大论坛等。你可以试试去掉。
        addDefaultHttpMessageConverters(converters);
    }
 
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false);
    }

现在测试下

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文