【问题标题】:Spring+SiteMesh 2.0 Chinese character supportSpring+SiteMesh 2.0 汉字支持
【发布时间】:2012-06-08 09:28:26
【问题描述】:

我用的是spring3.0和sitemesh2.0,问题是我的jsp页面无法显示中文。

我做了以下事情

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>

但是汉字还是这样显示的: å®å¾½çä½³å®ç©å·(éå¢)æéå¬å¸

提前致谢。

【问题讨论】:

    标签: spring-mvc encoding sitemesh


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      回复有点晚了,但我希望其他人可以从我浪费的时间中受益。 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>
      

      【讨论】:

      • 谢谢,我就是这样解决的。 INCLUDEFORWARD 成功了
      猜你喜欢
      • 1970-01-01
      • 2016-06-13
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      相关资源
      最近更新 更多