在Jboss上使用带有JSF 2的ISO-8859-1编码

时间:2012-08-10 13:43:06

标签: jsf jsf-2 character-encoding jboss mojarra

我有一个使用以下指令的JSP页面:

<%@page contentType="text/html; charset=iso-8859-1" pageEncoding="iso-8859-1"%>

因此,页面中的表单使用ISO-8859-1编码发送,bean接收(在setXXX()方法中)根据此格式编码的字符串。

我想&#34;翻译&#34;将JSP转换为JSF 2,它使用UTF-8作为默认值。如何强制JSF使用ISO-8859-1并因此模拟页面指令?

我在jboss 6上使用Mojarra + richfaces。

谢谢!

2 个答案:

答案 0 :(得分:5)

设置<f:view>encoding属性。

<f:view encoding="ISO-8859-1">

现在不再推荐坚持使用非Unicode编码了。您的网络应用程序尚未为世界统治做好准备,当最终用户尝试发送Unicode编码数据时(例如希伯来语,西里尔语,中文等),您将面临Mojibake的风险。

答案 1 :(得分:1)

我真的不明白这个问题,但这让我在使用UTF-8而不是ISO-8859-1时避免使用Mojibake:

public class EncodingFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        if (req.getCharacterEncoding() == null) {
            req.setCharacterEncoding("UTF-8");
        }
        chain.doFilter(req, resp);
    }

    @Override
    public void destroy() {
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
}

奇怪的是,没有这个过滤器,我得到了Mojibakes,虽然我没有指定任何类型的编码。我还注意到init()方法中的(filterConfig.getInitParameter(“encoding”))总是返回null。