JSF ISO-8859-2 charset

时间:2010-04-18 09:52:37

标签: jsf unicode character-encoding iso-8859-2

我在jsf页面上设置正确的字符集时遇到问题。我使用MySql db和latin2(ISO-8859-2 charset)和latin2_croatian_ci整理。但是,我在支持托管bean属性上设置值时遇到问题。

页面顶部的页面指令是:

<%@ page language="java" pageEncoding="ISO-8859-2" contentType="text/html; charset=ISO-8859-2" %>

在头部,我包括:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2">

我的表格标签是:

<h:form id="entityDetails" acceptcharset="ISO-8859-2">

我已经在web.xml中创建并注册了Filter,并执行了以下doFilter方法:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    request.setCharacterEncoding("ISO-8859-2");
    response.setCharacterEncoding("ISO-8859-2");
    chain.doFilter(request, response);
}

但是,当我通过inputText设置托管bean属性时,所有特殊(unicode)字符都被替换为'?'字符。

我真的没有任何其他想法如何将charset设置为页面以表现良好。有什么建议吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我所做的记录是误导性的。事实证明,stdout用'?'替换了特殊字符字符。但是,写入db的字符也被'?'取代标志。问题的另一部分是JConnector尚未设置正确的编码,因此db条目看起来非常像记录的属性。我没有意识到这是两个问题的结合。