gpt4 book ai didi

JBoss AS 7.1 - 请求参数编码

转载 作者:行者123 更新时间:2023-12-04 15:00:39 24 4
gpt4 key购买 nike

我拥有 UTF-8 格式的所有内容。这包括内容类型、数据库、文件、java 等等(除非我遗漏了一些东西)。

我关注了很多 stackoverflow 的答案、JIRA、博客等,但是,它仍然失败。

问题本身如下:

当我提交时,让我们假设,到 http://localhost:8080/app/searh?text=café ,调试,我的request.getParameter("text")总是错的,比如 café , 和 request.getCharachterEncoding()给我 null (?)。

查看请求 header ,我得到了这个:

GET http://localhost:8080/app/search?text=caf%C3%A9 HTTP/1.1
Host: localhost:8080
Proxy-Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17
Referer: http://localhost:8080/app/search?text=n%C3%A3o
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: UTF-8,*;q=0.5
Cookie: JSESSIONID=OMMITED

和响应头:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Wed, 31 Dec 1969 21:00:00 BRT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Tue, 19 Mar 2013 14:06:24 GMT
Proxy-Connection: keep-alive
Connection: keep-alive

一切都是UTF-8。我就是不明白。

我试图通过 -Dfile.encoding=UTF-8 -Dfile.io.encoding=UTF-8 -DjavaEncoding=UTF-8在我的 standalone.conf JAVA_OPTS变量,试图把
<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"/>

在我的 standalone.xml .这些都不能解决问题。

我可以尝试做些什么来解决这个问题?

提前致谢。

顺便说一句:是 JBoss AS 7.1.1。

最佳答案

我遇到了同样的问题,但在 Jboss 5.1 中,我解决了它,将 URIEncoding 属性添加到 HTTP 连接器(在 jbossweb/server.xml 中)并手动解码 URL/GET 参数。

但是在Jboss7中定义的方式和之前的版本不一样,google了一下发现这个link : 基本上你必须在standalone.xml 或domain.xml 文件中</extensions> 的结尾之后添加以下几行标签(看起来您已经完成了这一步;-):

<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"/>
</system-properties>

此外,您必须在 java.net.URIEncoder 对象的帮助下手动解码 URI 或参数:
String param = URLDecoder.decode(request.getParameter("text"), "UTF-8");

BalusC 有一个 interesing post in his blog关于它。

最后,第二种解决方案,如果您想避免使用前面的选项:您是否考虑过使用 POST 方法而不是 GET 方法?

我希望它有帮助。

关于JBoss AS 7.1 - 请求参数编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15502707/

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