JSF ISO-8859-2 字符集
Posted
技术标签:
【中文标题】JSF ISO-8859-2 字符集【英文标题】:JSF ISO-8859-2 charset 【发布时间】:2010-04-18 09:52:36 【问题描述】:在我的 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 中创建并注册了 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)字符都替换为“?”字符。
我真的没有任何其他想法如何将字符集设置为页面以使其表现良好。有什么建议吗?
提前致谢。
【问题讨论】:
你是如何断定它们被破坏的?您是否在视图中查看过它们?还是在标准输出中? (你System.out.print
那些字符)。
抱歉我的回复延迟。我通过sql脚本将一些数据插入到db中,它们显示正确,所以我得出结论,显示正确的字符集没有问题。我在从 JSF 发送的支持 bean 集方法数据中记录(通过 slf4j 的标准输出和文件),并且数据已经损坏。此外,插入数据库的数据已损坏。
【参考方案1】:
我所做的记录具有误导性。原来,stdout 用 '?' 替换了特殊字符。特点。但是,写入 db 的字符也被替换为 '?'符号。问题的另一部分是 JConnector 没有设置为正确的编码,所以 db 条目看起来非常像记录的属性。我没有意识到这是两个问题的结合。
【讨论】:
以上是关于JSF ISO-8859-2 字符集的主要内容,如果未能解决你的问题,请参考以下文章
Python 中 ISO-8859-2 和 UTF-8 之间的转换
如何在连接字符串中将 Access DB 从 ISO-8859-2 更改为 UTF-8?