邮件JSF中的字符编码乱码

时间:2013-12-18 11:00:36

标签: html jsf character-encoding

我在JSF中发布了以下文档。

<h:panelGrid columns="2">
                <h:outputText value="Klubbnamn"></h:outputText>
                <h:inputText name="clubname" value="#{club.name}"></h:inputText>
            </h:panelGrid>
            <h:commandButton value="Spara" action="#{serviceHCP.saveClub(club) }"></h:commandButton>
写作åäö作为发布的价值会让我回到原来的状态。在xhtml文件中编写的所有内容看起来都应该是只有发布的值才会出现乱码。如果我在java类中对其进行硬编码,它将被正确保存在数据库中。所以我确信帖子有问题。

我尝试将网页切换到is0-8859-1而没有结果。 Tomcat报告默认为utf-8。

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><html xmlns="http://www.w3.org/1999/xhtml"><head><link type="text/css" rel="stylesheet" href="/BowlingFacelets/faces/javax.faces.resource/theme.css?ln=primefaces-aristo" />
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Default title</title>
  <link rel="stylesheet" type="text/css" href="hcp-style.css" /></head>

<body>

.....

<td>ID</td>
<td>klubb</td>
</tr>
<tr>
<td>1</td>
<td>åäö</td>
 ....

1 个答案:

答案 0 :(得分:1)

这肯定看起来像请求编码的问题。您应该使用FireBugWireshark之类的工具检查HTTP POST的请求字符编码标头。

在请求标头中查找Content-Type。它必须包含:charset=utf-8

如果不是这种情况,您的设置中的某些内容是错误的,因为JSF应该处理请求字符编码。

尽管您可以尝试在自制过滤器中设置字符编码。它可能是这样的:

    @WebFilter("/*")
    public class CharEncodingFilter implements Filter {

        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws ServletException, IOException {
            request.setCharacterEncoding("UTF-8");
            chain.doFilter(request, response);
        }
    }

另见:

类似问题: