我有UTF-8的所有东西.这包括Content-Type,数据库,文件,java,一切(除非我错过了什么).
我遵循了很多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
Run Code Online (Sandbox Code Playgroud)
响应头:
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
Run Code Online (Sandbox Code Playgroud)
它是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"/>
Run Code Online (Sandbox Code Playgroud)
在我的standalone.xml.这一切都解决了这个问题.
我可以尝试做些什么来解决这个问题?
提前致谢.
BTW:是JBoss AS 7.1.1.
我遇到了同样的问题,但在 Jboss 5.1 中,我解决了这个问题,将 URIEncoding 属性添加到 HTTP 连接器(在 jbossweb/server.xml 中)并手动解码 URL/GET 参数。
\n\n但在 Jboss7 中定义它的方式与以前的版本不同,但谷歌搜索了一下我发现了这个链接:基本上你必须在标记末尾后的standalone.xml或domain.xml文件中添加以下几行</extensions>(看来您已经完成了此步骤;-):
<system-properties>\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>\n</system-properties>\nRun Code Online (Sandbox Code Playgroud)\n\n此外,您还必须借助 java.net.URIEncoder 对象手动解码 URI 或参数:
\n\nString param = URLDecoder.decode(request.getParameter("text"), "UTF-8");\nRun Code Online (Sandbox Code Playgroud)\n\nBalusC在他的博客中有一篇关于此的有趣文章。
\n\n最后,如果您想避免使用前面的选项,还有第二种解决方案:您是否考虑过使用 POST 方法而不是 GET 方法?
\n\n我希望它有帮助。
\n| 归档时间: |
|
| 查看次数: |
9764 次 |
| 最近记录: |