2012-06-04 57 views
0

我使用spring3.0和sitemesh2.0。问题是我无法在我的jsp页面中显示中文字符。Spring + SiteMesh 2.0汉字支持

我做了以下

的web.xml

<filter>  
     <filter-name>charsetFilter</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>charsetFilter</filter-name>  
     <url-pattern>*.do</url-pattern> 
    </filter-mapping> 
    <filter> 

在我的jsp:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 

在SiteMesh的模板:

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

sitemesh.xml:

<sitemesh> 
    <property name="decorators-file" value="/WEB-INF/decorators.xml" /> 
    <excludes file="${decorators-file}" /> 

    <page-parsers> 
     <parser content-type="text/html" 
      class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> 
     <parser content-type="text/html;charset=UTF-8" 
      class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> 
    </page-parsers> 

    <decorator-mappers> 
     <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper"> 
      <param name="config" value="${decorators-file}" /> 
     </mapper> 
    </decorator-mappers> 
</sitemesh> 

但依然是中国的字符显示是这样的: å®å¾½çä½³å®ç©A·(EA¢)æéå¬å¸

在此先感谢。

回答

1

的答复是有点晚了,但我希望其他人可能从我浪费的时间中受益。 Spring的过滤器对我也不起作用。我写了我自己的并手动设置servletResponse的contentType。我现在没有问题。

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) 
     throws ServletException, IOException { 
    resp.setContentType("text/html; charset=UTF-8"); 
    chain.doFilter(req, resp); 
} 

<filter> 
    <filter-name>EncodingFilter</filter-name> 
    <filter-class>com.muratdozen.mvc.filters.EncodingFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>EncodingFilter</filter-name> 
    <url-pattern>/ui/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>EncodingFilter</filter-name> 
    <url-pattern>/WEB-INF/views/*</url-pattern> 
    <dispatcher>ERROR</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 
+1

谢谢,这就是我解决它的方法。 INCLUDE FORWARD做了诀窍 – RVP

2

你的过滤器和jsp都很好看。也许检查数据库设置。 当您连接到您的分贝还要记住,你需要指定characterEncoding

jdbc:mysql://localhost:3306/yourdb?characterEncoding=UTF-8