我有UTF-8中的所有内容。这包括内容类型,数据库,文件,Java,一切(除非我错过了一些东西)。JBoss AS 7.1 - 请求参数编码
我遵循很多stackoverflow的答案,JIRA,博客等,但它仍然失败。
本身的问题如下:
当我提交,让我们假设,到http://localhost:8080/app/searh?text=café
,调试,我request.getParameter("text")
永远是错的,像café
和request.getCharachterEncoding()
给我null
(?)。
望着请求头,我得到这个:
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。
您好,感谢您的回答;我已经尝试的第一个解决方案没有奏效。在我的情况下使用POST将无济于事,因为是搜索,我希望用户可以复制该URL。我也尝试了你的第二个解决方案,并且错误依然存在。非常令人毛骨悚然......谢谢 – caarlos0 2013-03-19 16:51:07
嗨Caarlos,我的心里回答,但我对你的问题有点好奇,现在我已经准备好了一个例子:我已经复制了你的问题,并且我终于完成了它的工作,并且该解决方案同时适用于Jboss 5.x和7.事实是,我提供的前两种解决方案实际上是一种解决方案,因此为了使其工作,您必须定义系统属性,而且您必须解码参数。我修改了答案。 – Toni 2013-03-19 20:58:31
谢谢,我会考虑= D – caarlos0 2013-03-21 18:07:43