JSF 请求参数编码问题
JSF request parameter encoding struggles
在我们的 Web 应用程序中,我们有不同的表单,几乎所有表单在文本输入字段上都有编码问题。
当输入包含特殊字符如 Ͳ 时,站点 Bean 中的值会显示一个问号。元音变音和重音,例如。毫无问题地到达 Bean。
用 firebug 跟踪的已发送请求看起来很好。 header 显示 UTF-8 字符集:
application/x-www-form-urlencoded; charset=UTF-8
request-parameter 正确显示:
formInputPanel:comment hello Ͳ
我在谷歌上搜索了很多,我发现的大多数解决方案都告诉我通过 web.xml 实现过滤器来为请求设置正确的编码。问题是当调用过滤器时,编码设置为 UTF-8,但参数已经损坏并显示 hello ?
我还在 JBoss 的 system-properties 行中添加了以下行,但没有任何结果:
<property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
<property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
除登录页面外,所有页面均出现此问题。那里的参数很好地传递给了 Bean。登录页面是通过 JSP-Page 和 LoginServlet.
实现的
也许有人可以给我提示,我还能在哪里搜索问题。
问题已通过将 JBoss 配置中数据库连接的 connection-url
调整为:
解决
jdbc:mysql://servername:3306/dbname?characterEncoding=UTF-8&useUnicode=true
.
IDE 的控制台输出中的编码不是 UTF-8 编码。所以请求参数以错误的编码显示,但值是正确的。
在我们的 Web 应用程序中,我们有不同的表单,几乎所有表单在文本输入字段上都有编码问题。 当输入包含特殊字符如 Ͳ 时,站点 Bean 中的值会显示一个问号。元音变音和重音,例如。毫无问题地到达 Bean。
用 firebug 跟踪的已发送请求看起来很好。 header 显示 UTF-8 字符集:
application/x-www-form-urlencoded; charset=UTF-8
request-parameter 正确显示:
formInputPanel:comment hello Ͳ
我在谷歌上搜索了很多,我发现的大多数解决方案都告诉我通过 web.xml 实现过滤器来为请求设置正确的编码。问题是当调用过滤器时,编码设置为 UTF-8,但参数已经损坏并显示 hello ?
我还在 JBoss 的 system-properties 行中添加了以下行,但没有任何结果:
<property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
<property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
除登录页面外,所有页面均出现此问题。那里的参数很好地传递给了 Bean。登录页面是通过 JSP-Page 和 LoginServlet.
实现的也许有人可以给我提示,我还能在哪里搜索问题。
问题已通过将 JBoss 配置中数据库连接的 connection-url
调整为:
jdbc:mysql://servername:3306/dbname?characterEncoding=UTF-8&useUnicode=true
.
IDE 的控制台输出中的编码不是 UTF-8 编码。所以请求参数以错误的编码显示,但值是正确的。