1

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

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

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

我想将 JSP“翻译”成 JSF 2,它默认使用 UTF-8。如何强制 JSF 使用 ISO-8859-1 并因此模拟页面指令?

我在 jboss 6 上使用 Mojarra + richfaces。

谢谢!

4

2 回答 2

5

设置的encoding属性<f:view>

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

然而,这些天不再推荐坚持使用非 Unicode 编码。你的 webapp 还没有准备好统治世界,当最终用户尝试发送 Unicode 编码的数据(例如希伯来文、西里尔文、中文等)时,你会冒Mojibake的风险。

于 2012-08-10T13:55:59.877 回答
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。

于 2012-08-13T11:14:18.120 回答