1

我在我的 jsf 页面上设置正确的字符集时遇到问题。我将 MySql db 与 latin2(ISO-8859-2 字符集)和 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 中使用以下 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)字符都替换为“?” 特点。

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

提前致谢。

4

1 回答 1

0

我所做的日志记录具有误导性。原来,stdout 用 '?' 替换了特殊字符。特点。但是,写入 db 的字符也被替换为 '?' 符号。问题的另一部分是 JConnector 没有设置为正确的编码,所以 db 条目看起来非常像记录的属性。我没有意识到这是两个问题的结合。

于 2010-04-23T07:11:52.457 回答