1
我在我的jsf页面上设置正确的字符集有问题。我使用带有latin2(ISO-8859-2字符集)和latin2_croatian_ci排序规则的MySql db。但是,在支持托管bean属性上设置值时遇到问题。在我的页面顶部JSF ISO-8859-2字符集
Page指令是:
<%@ 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">
我创建和使用以下doFilter方法实现在web.xml中注册过滤器:
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)字符都将替换为'?'字符。
我真的没有任何其他想法如何设置字符集,以页面执行良好。有什么建议么?
在此先感谢。
*你是如何认定它们已被损坏的?你有没有在视图中查看它们?或者在标准输出中? (你在'System.out.print'这些字符的地方)。 – BalusC 2010-04-18 14:38:43
对不起,我的延迟回复。 我通过SQL脚本插入一些数据到数据库中,并且他们显示正确,所以我得出结论,显示正确的字符集没有问题。我在从JSF发送的支持bean集合方法数据中记录了(通过slf4j的stdout和文件),并且数据已损坏。另外,插入数据库的数据已损坏。 – Vladimir 2010-04-20 15:36:44