JBossAS 7.1-请求参数编码

JBossAS 7.1-请求参数编码,jboss,jboss7.x,Jboss,Jboss7.x,我所有的东西都是UTF-8的。这包括内容类型、数据库、文件、java等等(除非我遗漏了什么) 我关注了很多关于stackoverflow的答案、JIRAs、博客等,但仍然失败 问题本身如下: 我们假设,当我提交到http://localhost:8080/app/searh?text=café,调试,我的请求。getParameter(“text”)总是错误的,类似于cafÃ,和请求。getCharachterEncoding()给我空值(?) 查看请求头,我得到以下信息: GET http:/

我所有的东西都是UTF-8的。这包括内容类型、数据库、文件、java等等(除非我遗漏了什么)

我关注了很多关于stackoverflow的答案、JIRAs、博客等,但仍然失败

问题本身如下:

我们假设,当我提交到
http://localhost:8080/app/searh?text=café
,调试,我的
请求。getParameter(“text”)
总是错误的,类似于
cafÃ
,和
请求。getCharachterEncoding()
给我
空值(?)

查看请求头,我得到以下信息:

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。我只是不明白

我试图在我的
standalone.conf
JAVA\u OPTS
变量中传递
-Dfile.encoding=UTF-8-Dfile.io.encoding=UTF-8-DjavaEncoding=UTF-8
,试图将

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

在my
standalone.xml
中。这些都不能解决问题

我能做些什么来解决这个问题

提前谢谢


顺便说一句:是JBoss AS 7.1.1。

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

但是在Jboss7中定义它的方式不同于以前的版本,但通过谷歌搜索我发现了一点:基本上,您必须在standalone.xml或domain.xml文件中的
标记结束后添加以下行(看起来您已经完成了这一步;-):

巴卢斯克对此有自己的看法

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


我希望它能有所帮助。

我解决了这个问题,创建了一个过滤器,将请求和响应编码都设置为UTF-8


很有黑客味,但很管用。

我没有足够的声誉来添加评论,所以我会在这里写

getParameter(“text”)已经执行URL解码。再次调用URLDecoder.decode()将提供双重解码,这可能不会达到您想要的效果。例如:

logger.error("p1:"+request.getParameter("p1"));

http://localhost/test?p1=ku%2fki%44__%33X%C3%A9X
印刷品:

p1:ku/kiD__3XéX

standalone.xml或domain.xml配置不适合我

在jboss-as-7.1.1.Final上,只需将这一行添加到standalone.conf,该文件位于bin目录下:

JAVA_OPTS=“$JAVA_OPTS-Dorg.apache.catalina.connector.URI_ENCODING=UTF-8”


发件人:

您好,谢谢您的回答;我已经尝试过的第一个解决方案不起作用。在我的例子中,使用POST是没有意义的,因为这是一个搜索,我希望用户可以复制URL。我还尝试了您的第二种解决方案,但错误仍然存在。非常令人毛骨悚然。。。谢谢你的回答,我已经记在心里了,但是我对你的问题有点好奇,现在我准备了一个例子:我复制了你的问题,我终于让它工作了,这个解决方案在Jboss 5.x和7中都能工作。事实上,我给出的前两个解决方案实际上是一个单一的解决方案,所以要使它起作用,必须定义系统属性,而且必须解码参数。我已经修改了答案。谢谢,我会考虑,如果你遇到任何问题,请告诉我:)我正在使用JBOSS EAP 6.1,并且必须使用<代码>请求。
http://localhost/test?p1=ku%2fki%44__%33X%C3%A9X
p1:ku/kiD__3XéX