
SpringMVC 中有这样一个 Filter 专门处理编码问题的,它是CharacterEncodingFilter
。
比如默认给 response 返回设定编码格式为:UTF-8,则可以通过配置 CharacterEncodingFilter 实现。
CharacterEncodingFilter 源码
查看源码,它是一个OncePerRequestFilter
,里面有如下几个配置项:
- encoding:设置的编码格式
- forceRequestEncoding:是否强制设置请求编码格式为设置的编码格式
- forceResponseEncoding:是否强制设置返回编码格式为设置的编码格式
源码也很简单,请求会调用到:doFilterInternal
方法。
1 | public class CharacterEncodingFilter extends OncePerRequestFilter { |
所以在 SpringMVC 项目中使用,可以参考如下配置:
1 | <filter> |
SpringBoot 支持
SpringBoot 对CharacterEncodingFilter
也有支持,在项目启动中可以看到如下日志:
1 | 17:03:55.802 INFO 7980 --- : Mapping servlet: 'dispatcherServlet' to [/] |
这是因为 SpringBoot 在自动装配时,HttpEncodingAutoConfiguration
配置类里配置了该 Filter:
1 |
|
使用 SpringBoot 配置如下:
1 | # 设置的编码,默认为:UTF-8 |