2017-02-23 122 views
-1

我有2串字符串除了與另一個字符串包含「+」

String date = "23:02:2007"; 
String offset = "+08:00"; 

當我們添加此類似

String dO = date+offset; 
syso("dO: "+dO); 

我們期待的結果應該是dO: 23:02:2007+08:00; 當我在本地eclipse中嘗試這個時,我得到了上述結果。但是,當它被部署到我們的開發服務器,那麼我們越來越像

dO: 23:02:2007 08:00; 

"+"失蹤,而不是" "是越來越添加此響應。請幫我解決這個問題

+0

您是否嘗試過在打印服務器上單獨打印偏移量? –

+2

我們不知道該字符串發生了什麼 - 無論是在日誌還是其他內容中看到。請提供更多信息,最好是[mcve]。 –

+0

該代碼工作正常我! –

回答

0

這是由於字符'+'的編碼和解碼。 在Jersey這樣的服務中,加號會自動解碼爲空格。同樣在URL的情況下,加號被解碼爲空格(你可以用%2B替換它來解決這個問題)。

這也發生在發送到servlet的請求中。爲此,任何帶有加號的參數必須在發送前進行URL編碼。如果您可以讓我們知道您使用此字符串的上下文,那麼我們可以提供準確的解決方案。

+0

謝謝維賈雅恩,我的輸入是XML格式和即時得到這樣 STARTTIME <纈氨酸泰= 「DATETIME」> 2017-02-23T12:30Z,偏移 <纈氨酸泰= 「CHAR」> + 8 :00。解析後,我會得到字符串StartTime和Offset。但解析這個偏移量後的「+」被替換爲「」。請幫助我如何在請求中保留原始字符串, – Jam

+0

「+」號被認爲是XML編碼中的一個特殊字符,並且它被替換爲空格(UTF-8編碼)。這是一種默認的編碼機制,不建議更改此編碼。考慮到使用情況 - 這僅影響一個事件;所以我們可以使用replace()方法將空間更改爲此實例的加號。通常,這種解碼用於java中具有URLDecoder方法的URL;但在這種情況下不適用。 –

相關問題