2012-02-15 43 views
0

我必須在Tomcat 6.0.32(由zypper提供)中運行我的webapp的OpenSUSE 10.4機器,但在其中一個實例中,參數值中的「+」不是解碼爲'',我不知道爲什麼。有任何想法嗎?Tomcat 6不解碼+參數值中的空格

這兩個tomcats都是手動配置的,所以它們可能沒有運行相同的設置,但我想不出會導致此行爲的設置。

編輯:兩個實例都使用URIEncoding =「UTF-8」。我也試過沒有設置URIEncoding屬性,但在這種情況下沒有任何區別。

回答

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

+0

謝謝!我只看過tomcat版本(6.0.32),並認爲它是相同的版本。我想知道爲什麼7.14.1從一開始就沒有被選中?失敗的服務器最近配置的時間超過了工作服務器 - 人們會認爲默認情況下,zypper會選擇更新版本的tomcat?無論如何,再次感謝您的幫助! – claesv 2012-04-11 09:22:06

1

這可能是一個編碼問題。

嘗試添加UTF-8編碼的[TOMCAT_HOME] /home/server.xml的連接器:

e.g:

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />

希望它能幫助。

+0

我應該提到這一點 - 兩個實例都使用URIEncoding =「UTF-8」。我也沒有測試過 - 沒有區別。儘管感謝您的意見。 – claesv 2012-02-15 10:13:05

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。

1

在OpenSuSE 11.3上,這與tomcat6-6.0.24-5.16.1包相關,你可以通過降級到以前的tomcat包來解決它。我遇到了Confluence,https://jira.atlassian.com/browse/CONF-24659,並花了一段時間來調試。

  1. 降級的tomcat:

    zypper install --force tomcat6-6.0.24-5.14.1.noarch 
    
  2. 添加一個軟件包鎖定到online_updates不適用破獲包

    zypper的addlock的tomcat6