我必须在Tomcat 6.0.32中运行我的webapp的OpenSUSE 10.4机器(由zypper提供),但在其中一个实例'+'参数值中没有被解码为'',我无法弄清楚为什么。有什么想法吗?
两个tomcats都是手动配置的,因此它们可能没有使用相同的设置运行,但我想不出会导致此行为的设置。
编辑:两个实例都使用URIEncoding =“UTF-8”。我也试过没有设置URIEncoding属性,但在这种情况下没有区别。
答案 0 :(得分:1)
这可能是编码问题。
尝试将UTF-8编码添加到[TOMCAT_HOME] /home/server.xml的连接器中:
e.g:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
希望它有所帮助。
答案 1 :(得分:1)
这可能是OpenSuSE上特定Tomcat构建的问题。我正在运行OpenSuSE 11.4并且遇到了同样的问题。一个简单的YaST更新纠正了它。
错误的Tomcat版本:tomcat6-6.0.32-7.12.1.noarch (真的是tomcat6 - * - 6.0.32-7.12.1.noarch)
有效的版本:tomcat6-6.0.32-7.14.1.noarch
答案 2 :(得分:1)
在OpenSuSE 11.3上,这与tomcat6-6.0.24-5.16.1软件包有关,您可以通过降级到以前的tomcat软件包来解决它。我使用Confluence https://jira.atlassian.com/browse/CONF-24659遇到了这个问题,并且需要一段时间来调试。
降级tomcat:
zypper install --force tomcat6-6.0.24-5.14.1.noarch
向online_updates添加包锁不要应用已破坏的包
zypper addlock tomcat6
答案 3 :(得分:0)
我在运行tomcat6-6.0.24-5.16.1的一些OpenSuSE 11.3服务器上遇到了完全相同的问题。 我的页面编码为ISO-8859-1。
无论如何,我已经做了一些测试,并注意到如果我在测试表单中提交的参数包含非ascii字符,例如瑞典语ÅÄ或美元或百分比,则参数被正确编码/解码。但是,如果参数值仅包含常规ASCII字符,例如“This sucks”,则似乎不会触发编码/解码,将空格保留为+。
如果表单具有enctype multipart / form-data,则该问题不存在。
编辑:
我可以验证更新Tomcat的工作原理。 我更新到tomcat6-6.0.35-42.2.noarch。