JSF 表格和德语变音符号

2024-04-14

我在我的一个 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(使用前将#替换为@)

JSF 表格和德语变音符号 的相关文章