本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/11/05/spring-boot-encoding-with-utf8/
编码算不上一个大问题,即使你什么都不管,也有很大的可能你不会遇到任何问题,因为大部分框架都有默认的编码配置,有很多是UTF-8,那么遇到中文乱码的机会很低,所以很多人也忽视了。
Spring系列产品大量运用在网站开发中,而Spring Boot是为了简化配置而出现的,理论上讲Spring Boot应该默认配置UTF-8为默认编码,但是网络上依然可以看到很多关于Spring Boot乱码的文章,大部分解决方案沿用Spring MVC的方案,自定义EncodingFilter。
但是仔细查看Spring Boot的文档,可以看到默认的编码的确是UTF-8
spring.http.encoding.charset=UTF-8 # Charset of HTTP requests and responses. Added to the "Content-Type" header if not set explicitly. spring.http.encoding.enabled=true # Enable http encoding support.
而相关的配置会在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,而且并需要搭配其他配置开关使用,所以一般不需要管。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/11/05/spring-boot-encoding-with-utf8/
请教:
我现在出现一个问题,就是在springboot中value注解引用application.properties中的中文出现乱码,怎么解决。
参考最新的一篇博文:http://www.huangyunkun.com/2016/12/08/spring-boot-properties-encoding-issue/
谢谢
我在配置文件里面添加了这几项,ie浏览器,中文还是乱码
我的问题更奇葩:走公司自动发布,第一次不管怎么配置都是中文乱码,然后手动重启下就可以了