我在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设置为页面以表现良好。有什么建议吗?
提前致谢。
答案 0 :(得分:0)
我所做的记录是误导性的。事实证明,stdout用'?'替换了特殊字符字符。但是,写入db的字符也被'?'取代标志。问题的另一部分是JConnector尚未设置正确的编码,因此db条目看起来非常像记录的属性。我没有意识到这是两个问题的结合。