在深入研究许多过滤器链并在其中移动了字符编码之后,终于找到了问题。另一个过滤器是在启动字符编码之前更改编码。
我只是从spring security手中获得了过滤器,然后将其手动添加为bean来为我做过滤:
@Beanpublic FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean registrationBean = new FilterRegistrationBean(); CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); characterEncodingFilter.setEncoding("UTF-8"); registrationBean.setFilter(characterEncodingFilter); return registrationBean;}
2天或搜索和尝试,只是一个简单的答案。很难找到答案
-更新-
如果您使用的是Spring Boot
1.2+,则完全不需要CharacterEncoding。默认情况下,它处于理想位置,字符编码等于utf8。因此,下次,只要设置属性(如有)即可!要设置的属性是:
# HTTP encoding (HttpEncodingProperties)spring.http.encoding.charset=UTF-8 # the encoding of HTTP requests/responsesspring.http.encoding.enabled=true # enable http encoding supportspring.http.encoding.force=true # force the configured encoding
-更新2 —
来自Tomcat Wiki:
Tomcat8从8.0.0(具体来说是8.0.0-RC3)开始,
URIEncoding元素上的attribute
的默认值取决于“严格遵守servlet”设置。URIEncoding的默认值(严格符合性已关闭)为now
UTF-8。如果启用了“严格遵守servlet”,则默认值为
ISO-8859-1。
概括地说,不需要在Tomcat Config neigter中设置UriEncoding。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)