当你用尽了网上的方法还是解决不了乱码问题,或是嫌网上的解决方法太麻烦时,你想到了过滤器,当您辛辛苦苦写了一个过滤器,或是用了Spring的过滤器还是没解决问题时,那么你就会很恼火,我最近就遇上这么一个问题,用尽了网上的方法,spring设置的过滤编码也是UTF-8,但就是不起作用,如下:
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
到后来发现,
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
的位置放错了,放到了WEB.XML 的最后,所以我设置的过滤器根本就没起到作用,改变了一下位置
把
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>紧紧的放在
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>的后面,我的乱码问题终于解决了。
总结:web.xml中过滤器的设置,<filter-mapping>
最好紧紧的放在<filter>的后面,如下:
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样或许就能解决你的问题。