CharacterEncodingFilter没有在Spring MVC 3.0中翻译unicode文本

时间:2010-12-17 03:28:11

标签: java spring spring-mvc utf-8 character-encoding

我将CharacterEncodingFilter设置为我的web.xml中的第一个过滤器:

<filter>  
 <filter-name>encodingFilter</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>  
 <init-param>  
    <param-name>forceEncoding</param-name>  
    <param-value>true</param-value>  
 </init-param>  
</filter>  
<filter-mapping>  
 <filter-name>encodingFilter</filter-name>  
 <url-pattern>/*</url-pattern>  
</filter-mapping> 

在我的JSP中:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" isELIgnored="false" %>

和此:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

但是,例如,从JSP表单传递回控制器,然后再返回到JSP,变为:T%E

我已完成数小时的Google搜索但无法找到此问题的答案。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

如果您使用的是Tomcat,则可能未在URIEncoding中设置server.xml。如果不将其设置为UTF-8,则无效。绝对保持CharacterEncodingFilter。不过,这里有一个简洁的checklist可供选择。它肯定会指导你完成这项工作。

答案 1 :(得分:1)

如果CharacterEncodingFilter或您实施的过滤器位于web.xml的顶部,请确保xml中<filter-mapping>的{​​{1}}元素出现在其他元素之前其他过滤器的CharacterEncodingFilter元素。

花了我很长时间才弄明白。可能对某人有用。