首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sitemesh和UTF-8编码

sitemesh和UTF-8编码
EN

Stack Overflow用户
提问于 2010-12-17 17:35:27
回答 3查看 2.1K关注 0票数 1

我有一个使用sitemesh的spring-mvc应用程序。我遇到的问题是,我的页面需要是UTF-8格式,但sitemesh支持ISO-8859-1字符集。是否可以将Sitemesh配置为使用UTF-8页面?我使用了一个简单的示例,其中我试图正确地显示页面,但得到的却是无效字符,如

我使用的文件是:

sitemesh.xml

代码语言:javascript
复制
<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=ISO-8859-1"
            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>

web.xml

代码语言:javascript
复制
...
<filter>
    <filter-name>sitemesh</filter-name>
    <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
...

decorators.xml

代码语言:javascript
复制
<decorators defaultdir="/decorators">
    <decorator name="main" page="main.jsp">
          <pattern>/*</pattern>
    </decorator>
</decorators>

main.jsp

代码语言:javascript
复制
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
<html>
<body>
 some stuff here
...
<div class="main"><decorator:body /></div>
</body>
</html>

我的示例页面:

代码语言:javascript
复制
<html>
...
<body>
     mùpeeàçè
</body>
</html>

有谁知道吗?谢谢

EN

回答 3

Stack Overflow用户

发布于 2013-04-11 21:26:42

你可以在web.xml中尝试一下(forceEncoding很重要,它对我很有效)

代码语言:javascript
复制
    <filter>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
票数 3
EN

Stack Overflow用户

发布于 2011-06-03 09:21:18

您是否尝试过在web.xml中添加CharacterEncodingFilter?请参阅:http://ibnaziz.wordpress.com/2008/06/10/spring-utf-8-conversion-using-characterencodingfilter/

票数 1
EN

Stack Overflow用户

发布于 2013-11-18 02:54:58

回复有点晚,但我希望其他人能从我浪费了几个小时的东西中受益。Spring的过滤器对我也不起作用。我自己编写并手动设置了servletResponse的contentType。我现在没有任何问题。

代码语言:javascript
复制
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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4469194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档