我有一个使用以下指令的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。
谢谢!
答案 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。