gpt4 book ai didi

JSF 2.0 request.getParameter 返回编码错误的字符串

转载 作者:行者123 更新时间:2023-12-04 21:22:16 25 4
gpt4 key购买 nike

我正在用 JSF 2.0 编写一个应用程序,它支持多种语言,其中包括具有特殊字符的语言。我使用 String value = request.getParameter("name") 和 POST 方法,页面编码设置为 UTF-8,应用程序部署在 apache tomcat 6 上,它在 server.xml 中将连接器正确设置为 utf-8文件:

 <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8088" protocol="HTTP/1.1" redirectPort="8443"/>

是的,我得到了奇怪的结果,例如 ä 代替了预期的特殊字符。接下来我应该检查什么来解决这个问题?感谢您的帮助和建议。

------------编辑--------------------

这是响应头:

Server  Apache-Coyote/1.1
Content-Type text/html;charset=UTF-8
Content-Length 5160
Date Sun, 10 Oct 2010 15:32:24 GMT

以及请求 header :

Host    localhost:8088
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729; .NET4.0E)
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language pl,en-us;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Referer http://localhost:8088/Panel/addbuilding.jsp
Cookie JSESSIONID=DD85C95BDFEA9E51B5E4146F2643295D
Pragma no-cache
Cache-Control no-cache

最好的问候,萨斯。

最佳答案

URIEncoding="utf-8" 只对 GET 请求有效。 GET 带有请求 URL 中的参数(如您在浏览器地址栏中所见)。但是,POST 请求参数在请求正文中,而不是在请求 URL 中。你想使用 request.setCharacterEncoding("UTF-8")这里。您可以在映射到 FacesServletFilter 类中执行此操作。

但是,默认情况下,JSF 应该已经根据页面编码处理了这一点(如果您使用的是 Facelets)。您确定不仅仅是标准输出/日志记录控制台使用了错误的编码来显示参数吗?

另见:

关于JSF 2.0 request.getParameter 返回编码错误的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3897301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com