360SDN.COM

Spring Boot中的乱码和编码(spring.http.encoding.charset,spring.http.encoding.en

来源:  2018-07-27 17:59:31    评论:0点击:

Spring系列产品大量运用在网站开发中,而Spring Boot是为了简化配置而出现的,理论上讲Spring Boot应该默认配置UTF-8为默认编码,但是网络上依然可以看到很多关于Spring Boot乱码的文章,大部分解决方案沿用Spring MVC的方案,自定义EncodingFilter。

但是仔细查看Spring Boot的文档,可以看到默认的编码的确是UTF-8 ,以下可以配置在application.properties文件中

# Charset of HTTP requests and responses. Added to the "Content-Type" header if not set explicitly.
spring.http.encoding.charset=UTF-8
# Enable http encoding support.
spring.http.encoding.enabled=true
 
而相关的配置会在HttpEncodingAutoConfiguration中使用

 
@Bean
    @ConditionalOnMissingBean(CharacterEncodingFilter.class)
    public CharacterEncodingFilter characterEncodingFilter() {
        CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter();
        filter.setEncoding(this.properties.getCharset().name());
        filter.setForceRequestEncoding(this.properties.shouldForce(Type.REQUEST));
        filter.setForceResponseEncoding(this.properties.shouldForce(Type.RESPONSE));
        return filter;
    }
而这里你其实可以看到,默认情况下forceRequestEncoding和forceResponseEncoding是为false的。

在配置中自己加上一行


spring.http.encoding.force=true
除了常见的http encoding,Spring Boot中还可以控制这些编码


banner.charset
spring.freemarker.charset
server.tomcat.uri-encoding
spring.mail.default-encoding
spring.messages.encoding
spring.thymeleaf.encoding
 
只不过这些值默认就设置为UTF-8,而且并需要搭配其他配置开关使用,所以一般不需要管。
为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权