我在我的一个 JSF(这是一个 Facelet)中遇到了一个奇怪的问题。我正在使用 Richfaces,在一页上我得到了一个普通表单
<h:form></h:form>
我的问题是,当我提交表单时,所有 UTF-8 字符(例如德语元音变音 (äöü))都会被加密接收。如果我在浏览器上将页面更改为 ISO-8859-1,它就可以工作。
如果我用属性扩展表单
<h:form id="register-form" acceptcharset="ISO-8859-1">
它也有效。 (仅适用于德语元音变音) - 其他 UTF-8 字符将被加密为不可读的内容。
有谁可以帮我这个吗?
您需要设置POST
request编码方式HttpServletRequest#setCharacterEncoding() http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletRequest.html#setCharacterEncoding%28java.lang.String%29。最好的地方是Filter
映射到所需的url-pattern
。为了统治世界,你当然想要使用UTF-8
每时每刻。这doFilter()
方法基本上如下所示:
if (request.getCharacterEncoding() == null) {
request.setCharacterEncoding("UTF-8");
}
chain.doFilter(request, response);
然而,这并不是您在字符编码方面需要考虑的唯一问题。有关 Java EE Web 应用程序的更多背景信息和其他(详细)解决方案,您可能会发现本文也很有用:Unicode - 如何获得正确的字符? http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters-right.html
Update: 根据评论:
经过一番谷歌搜索后,我已经实现了一个过滤器。但这对我的问题没有影响。
那么问题更多地出在您用来存储/显示字符的工具中。怎么发现字符是乱码的?在日志记录中?如果是这样,它使用 UTF-8 吗?或者是在日志文件查看器/控制台中?如果是这样,它使用 UTF-8 吗?或者是在数据库表中?如果是这样,它使用 UTF-8 吗?或者是在数据库管理工具中?如果是这样,它使用 UTF-8 吗?还是在结果页面中?如果是这样,它使用 UTF-8 吗?等等..浏览上述链接的解决方案部分如何让它们顺利进行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)